Во-первых, вы, вероятно, должны различать am/pm, как указано в комментариях выше.
Однако если бы вы знали все эти времена были вечера, предложили свой список вывода выше, то вы могли бы перебирать каждое значение зачистки нежелательных символов и добавить 1200, как показано ниже:
list1 = [{'start' : 'Mon12', 'end' : '3:30'},
{'start' : '7', 'end' : '10:30'}]
def shift24(listofdict):
shift = 1200
resultlist = listofdict
# loop through list of dictionaries, then through each dictionary
for d in resultlist:
for key in d:
# create a mask by stripping each value of numbers
# (uses a list comp of numerical ASCII characters)
mask = d[key].strip(''.join([chr(x) for x in range(48,58)]))
# use that mask to get just the numbers
maskstrip = d[key].replace(mask,'')
# evaluate the length of string and convert to right format
# assuming if len(str) < 3: we just have the hours and need
# to mulitply by 100
if len(maskstrip) < 3:
result = ('%04d' % (int(maskstrip) * 10**2))
else:
result = ('%04d' % int(maskstrip))
# shift these values by 1200 hours and return list
#use str() if you want to output strings not integers
d[key] = int(result) + shift
return resultlist
print(shift24(list1))
Выход будет :
[{'start': 2400, 'end': 1530}, {'start': 1900, 'end': 2230}]
Надежда, что помогает, изменения относительно того, что соответствует вашим потребностям
, как вы будете различать, что '3:30' является '15: 30' не '3:30'? – Jerzyk
Должен ли list1 действительно содержать «Mon12», или он должен быть «12»? – andrew
он должен содержать «Mon12» – user1335606