如何在Python中创建时间值作为键(m:ss)的字典

如何在Python中创建时间值作为键(m:ss)的字典,python,dictionary,Python,Dictionary,创建存储时间值(分和秒)的字典的格式是什么?例如,我想创建一个保存跑步者冲刺时间的字典:mysprits={“first”:4:30,“second”:3:13,“third”:5:36}等等。在字典中输入的时间是什么格式? 提前谢谢。我相信有很多方法,但有一种选择是以字符串形式输入时间: your_dict = {"first": "4:30","second": "3:13"} 或者,您可以在datetime模

创建存储时间值(分和秒)的字典的格式是什么?例如,我想创建一个保存跑步者冲刺时间的字典:
mysprits={“first”:4:30,“second”:3:13,“third”:5:36}
等等。在字典中输入的时间是什么格式?
提前谢谢。

我相信有很多方法,但有一种选择是以字符串形式输入时间:

your_dict = {"first": "4:30","second": "3:13"}
或者,您可以在datetime模块中使用time类:

example = datetime.time(0,4,30) # this would be 0 hours, 4 minutes and 30 seconds

your_dict = {"first": datetime.time(0,4,30),"second": datetime.time(0,3,13)} # etc...
然后,您还可以创建一个lambda函数,以更轻松地启动时间,这样就不必每次都在字典中写入datetime。时间(0,分,秒),例如:

time_obj = lambda m, s: datetime.time(0,m,s)

your_dict['third'] = time_obj(5, 36)

print(your_dict['third']) # this would return: 00:05:36
x = datetime.timedelta(minutes=2, seconds=20) # notice the .timedelta this time
y = datetime.timedelta(minutes=1, seconds=10)

print(x+y) # returns: 0:03:30
x = datetime.timedelta(minutes=2, seconds=20)
y = datetime.timedelta(minutes=1, seconds=10)
z = datetime.timedelta(minutes=0, seconds=50)

times = [x, y, z]

print(times)
# returns: [datetime.timedelta(0, 140), datetime.timedelta(0, 70), datetime.timedelta(0, 50)]

print(sorted(times))
# returns: [datetime.timedelta(0, 50), datetime.timedelta(0, 70), datetime.timedelta(0, 140)]

要回答评论中的问题,可以将timedelta对象添加到一起,例如:

time_obj = lambda m, s: datetime.time(0,m,s)

your_dict['third'] = time_obj(5, 36)

print(your_dict['third']) # this would return: 00:05:36
x = datetime.timedelta(minutes=2, seconds=20) # notice the .timedelta this time
y = datetime.timedelta(minutes=1, seconds=10)

print(x+y) # returns: 0:03:30
x = datetime.timedelta(minutes=2, seconds=20)
y = datetime.timedelta(minutes=1, seconds=10)
z = datetime.timedelta(minutes=0, seconds=50)

times = [x, y, z]

print(times)
# returns: [datetime.timedelta(0, 140), datetime.timedelta(0, 70), datetime.timedelta(0, 50)]

print(sorted(times))
# returns: [datetime.timedelta(0, 50), datetime.timedelta(0, 70), datetime.timedelta(0, 140)]
要排序,可以使用python sorted()函数对timedelta对象列表进行排序,例如:

time_obj = lambda m, s: datetime.time(0,m,s)

your_dict['third'] = time_obj(5, 36)

print(your_dict['third']) # this would return: 00:05:36
x = datetime.timedelta(minutes=2, seconds=20) # notice the .timedelta this time
y = datetime.timedelta(minutes=1, seconds=10)

print(x+y) # returns: 0:03:30
x = datetime.timedelta(minutes=2, seconds=20)
y = datetime.timedelta(minutes=1, seconds=10)
z = datetime.timedelta(minutes=0, seconds=50)

times = [x, y, z]

print(times)
# returns: [datetime.timedelta(0, 140), datetime.timedelta(0, 70), datetime.timedelta(0, 50)]

print(sorted(times))
# returns: [datetime.timedelta(0, 50), datetime.timedelta(0, 70), datetime.timedelta(0, 140)]

要在字典中对其进行排序,我建议看一看。

是否回答了您的问题?数组/列表可能是更合适的数据结构,因为元素具有固有的顺序。字符串时间值如何转换为时间?我想把所有的值加起来得到总时间。是否可以将时间值从lease排序为maxist?在这种情况下,不要使用字符串,而是使用timedelta。我已经补充了你上述问题的答案。