因此,我试图使dict
按键的值排序。
我从这个开始:
a = [0, 4, 8, 16]
b = [0.15, 0.50, 0.33, 0.009]
d = {}
d.update(zip(a, b))
#{0: 0.15, 8: 0.33, 4: 0.5, 16: 0.009}
即dict
被扰乱了,即使列表中的键是有序的。
因此,根据在此找到的其他问题的建议,我尝试sorted
:
sorted_d = sorted(d.items(), key=lambda x: x[0])
#[(0, 0.15), (4, 0.5), (8, 0.33), (16, 0.009)]
这给了我想要的一组有序元组。
然后我回到dict
:
fin = dict(d)
#{0: 0.15, 8: 0.33, 4: 0.5, 16: 0.009}
但是订单又被加扰了!
所以:
为什么字典会扰乱键的顺序,即为什么它们不保留我定义的键列表的顺序?
我可以按要求做出命令吗?即{0: 0.15, 4: 0.5, 8: 0.33, 16: 0.009}
?
答案 0 :(得分:2)
正如@DanielRoseman所说,字典没有顺序(直到Python 3.7,这是语言实现的一部分)。
如果需要订购,请使用collections.OrderedDict
。它的功能与常规字典非常相似:
import collections
d = collections.OrderedDict(zip(a, b))