在python中字典的顺序是什么

2024-04-24 23:23:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于python词典顺序的问题。我使用的是python2.7

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

for key in array:
    print key

为什么结果显示

dad
bob
nurse
cat

不是

dad 
cat
bob
nurse

Tags: keyinhellofor顺序errorarraycat
3条回答

在标准Python实现CPython中,字典没有保证的顺序per the docs。你知道吗

是的,我同意,dictionary是一个独立的数据结构,这意味着它总是有自己的生命:),但请看这个示例:

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]表示:根据什么,字典将被排序。所以我想这也许能解决问题。你知道吗

但是。。找不到一个严格的答案,为什么这本词典在印刷时有这样的顺序。我想这是一个记忆的问题,这本词典是怎么安排的。你知道吗

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

相关问题 更多 >