我有Python中的dict,其键的形式如下:
mydict = {'0' : 10,
'1' : 23,
'2.0' : 321,
'2.1' : 3231,
'3' : 3,
'4.0.0' : 1,
'4.0.1' : 10,
'5' : 11,
# ... etc
'10' : 32,
'11.0' : 3,
'11.1' : 243,
'12.0' : 3,
'12.1.0': 1,
'12.1.1': 2,
}
有些指数没有子值,有些指数有一级子值,有些指数有两级子值。如果我只有一个子级别,我就可以把它们都当作数字并按数字排序。第二个子层迫使我把它们都当作字符串来处理。但是,如果我像字符串一样对它们排序,我将在1
之后有10
,在2
之后有20
。
如何正确排序索引?
注意:我真正想做的是打印出按索引排序的dict。如果有比分类更好的方法,那对我来说没问题。
可以按所需的方式对键进行排序,方法是将键拆分为“.”,然后将每个组件转换为整数,如下所示:
它返回:
您可以遍历键列表,并根据需要从字典中提取值。
您还可以对mydict.items()的结果进行排序,非常类似:
这将为您提供(键、值)对的排序列表,如下所示:
Python的排序函数可以使用一个自定义比较函数,因此您只需要定义一个按您喜欢的方式比较键的函数:
在这种情况下,最好使用
key
参数来sorted()
。请参阅Ian Clelland的答案,以获取有关该问题的示例。作为Ian Clelland's答案的附录,
map()
调用可以替换为列表理解。。。如果你喜欢那种风格。它可能也会更有效(尽管我怀疑在这个案例中是疏忽大意的)。sorted(mydict.keys(), key=lambda a: [int(i) for i in a.split('.')])
相关问题 更多 >
编程相关推荐