我有一个字典。python根据时间排序的字典
d = {'0:0:7': '19734', '0:0:0': '4278', '0:0:21': '19959', '0:0:14': '9445', '0:0:28': '14205', '0:0:35': '3254'}
我想按字典中的键()排序字典。
如何排序我的字典?
我有一个字典。python根据时间排序的字典
d = {'0:0:7': '19734', '0:0:0': '4278', '0:0:21': '19959', '0:0:14': '9445', '0:0:28': '14205', '0:0:35': '3254'}
我想按字典中的键()排序字典。
如何排序我的字典?
Python中的字典没有订单保证。有collections.OrderedDict
,它保留插入顺序,但如果你想通过一个标准的字典的键,以便工作,你可以这样做:
for k in sorted(d):
在你的情况下,问题是,你的时间字符串不会排序正确。你需要包含使他们这样做所需的附加零,例如, "00:00:07"
,或将它们解释为实际的time
对象,这些对象将正确排序。这个功能可能是有用的:
def padded(s, c=":"):
return c.join("{0:02d}".format(int(i)) for i in s.split(c))
,如果你真的想保留你的输出电流格式,您可以以此为key
为sorted
:
字典不排序,如果你想它打印出来或者通过它在有序进行迭代,你应该首先将其转换为一个列表:
如:
sorted_dict = sorted(d.items(), key=parseTime)
#or
for t in sorted(d, key=parseTime):
pass
def parseTime(s):
return tuple(int(x) for x in s.split(':'))
请注意,这意味着您不能对sorted_dict使用d ['0:0:7']语法。
将'key'参数传递给排序告诉python如何比较列表中的项目,标准字符串比较将无法按时间排序。
非常感谢。 这个工作正常! –
http://stackoverflow.com/help/someone-answers – jonrsharpe