Python-从元组的有序列表中做出命令

时间:2018-09-17 17:52:17

标签: python dictionary

因此,我试图使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}

1 个答案:

答案 0 :(得分:2)

正如@DanielRoseman所说,字典没有顺序(直到Python 3.7,这是语言实现的一部分)。

如果需要订购,请使用collections.OrderedDict。它的功能与常规字典非常相似:

import collections
d = collections.OrderedDict(zip(a, b))