python中字典的顺序是什么

时间:2016-07-21 21:47:59

标签: python python-2.7 dictionary

我对python中字典的顺序有疑问。我在python 2.7

array ={"dad":"nse","cat":"error","bob":"das","nurse":"hello"}

for key in array:
    print key

为什么结果显示

dad
bob
nurse
cat

不是

dad 
cat
bob
nurse

3 个答案:

答案 0 :(得分:1)

在标准的Python实现中,CPython,词典没有保证的顺序,per the docs

答案 1 :(得分:0)

根据Python documentation,字典中的元素没有排序。 Python可以按照它选择的顺序将条目返回给您。如果您想要包含订单的字典,可以使用OrderedDict。但是,由于它必须保持顺序,因此该集合的性能比普通Dict更差。

答案 2 :(得分:0)

是的,我同意,词典是一个独立的数据结构,这意味着它总是过着它的生命:),但请查看这个例子:

from collections import OrderedDict
days = {"Monday": 1, "Tuesday": 2, "Wednesday": 3, "Thursday": 4, "Friday": 5}
print days
sorted_days = OrderedDict(sorted(days.items(), key=lambda t: t[1]))
print sorted_days
print list(days)[0]
print list(sorted_days)[0]

输出:

{'Friday': 5, 'Tuesday': 2, 'Thursday': 4, 'Wednesday': 3, 'Monday': 1}
OrderedDict([('Monday', 1), ('Tuesday', 2), ('Wednesday', 3), ('Thursday', 4), ('Friday', 5)])
Friday
Monday

在lambda表达式中t[1]表示:根据内容,字典将被排序。所以我认为它可以解决问题。

但是......无法找到严格的答案,为什么字典在打印时会有这样的顺序。我想这是一个记忆问题,字典会安排自己。