我一直在尝试订购具有此格式密钥的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
。
如何避免仅使用最重要的数字进行订购?
答案 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:1
在0: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]))