我如何信任Python字典的顺序?

时间:2010-01-03 02:33:32

标签: python dictionary

我正在尝试在Python中创建一个我可以排序的字典,但是当我添加新内容时它似乎会改变顺序。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:9)

标准词典不会强加排序,它只是一个查找。

您需要Ordered DictionaryOrdered Dictionary

答案 1 :(得分:5)

Python dict被构建为哈希表 - 性能很好,但排序本质上是任意的和不可预测的。如果您需要偶尔进行可预测排序的步行,并且基于键或值,sorted内置非常方便:

# print all entries in sorted key order
for k in sorted(d): print k, d[k]

# print all entries in reverse-sorted value order
for k in sorted(d, key=d.get, reverse=True): print k, d[k]

# given all keys are strings, print in case-insensitive sorted order
for k in sorted(d, key=str.lower): print k, d[k]

等等。如果您需要的是不同的(例如,跟踪插入密钥的相应时间,或者更改其值,等等),其他答案中建议的“有序词典”将更好地为您服务(但从未使用过令人敬畏的原始数据)表现真实dict! - )。