Python按键值命令dict

时间:2015-08-16 14:23:15

标签: python sorting dictionary

我一直在尝试订购具有此格式密钥的dict:"0:0:0:0:0:x"其中x是填充dict时递增的变量。

由于字典没有按顺序插入,并且我需要显示有序的键值,我尝试使用

collections.OrderedDict(sorted(observation_values.items())

其中observation_values是我的dict,但值是关于第一个数字的命令,如下所示:

"0:0:0:0:0:0": [0.0], "0:0:0:0:0:1": [0.0], "0:0:0:0:0:10": [279.5],
"0:0:0:0:0:100": [1137.8], "0:0:0:0:0:101": [1159.4], "0:0:0:0:0:102":
[1180.3], "0:0:0:0:0:103": [1193.6]...

"0:0:0:0:0:109"然后再回到"0:0:0:0:0:11",然后又回到"0:0:0:0:0:110"..:111..:112

如何避免仅使用最重要的数字进行订购?

2 个答案:

答案 0 :(得分:7)

您正在对字符串进行排序,因此它们按字典顺序排序,而不是数字排序。

sorted()提供自定义排序键:

sortkey = lambda i: [int(e) for e in i[0].split(':')]
collections.OrderedDict(sorted(observation_values.items(), key=sortkey))

这将获取每个键值对(i[0])的键,将其拆分为:冒号并将该键中的每个数字转换为整数。现在,按键将按字典顺序对各部分进行排序,每个部分按数字顺序进行排序。现在0:0:0:0:0:10:0:0:0:0:100之前排序,并且都在0:0:0:0:1:0之前排序。

答案 1 :(得分:0)

可能是这个帮助

>>>sorted(observation_values.items(),key=lambda x: int(x[0].split(":")[-1]))