python字典按时间排序

时间:2014-02-22 11:25:16

标签: python dictionary

我有一个字典。

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'}

我希望在dict中按键()排序dict 如何对我的字典进行排序?

3 个答案:

答案 0 :(得分:1)

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

for k in sorted(d, key=padded):

答案 1 :(得分:1)

字典未排序,如果要打印出来或按排序顺序迭代它,您应该首先将其转换为列表:

e.g:

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'参数传递给sorted会告诉python如何比较列表中的项目,标准字符串比较将无法按时间排序。

答案 2 :(得分:0)