繁体   English   中英

基于时间排序的python字典

[英]python dictionary sorted based on time

我有一本字典,如下所示。

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))

如果您确实想在输出中保留当前格式,则可以将其用作sortedkey

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

字典没有排序,如果你想打印出来或者按排序的顺序遍历它,你应该先把它转换成一个列表:

例如:

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 如何比较列表中的项目,标准字符串比较无法按时间排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM