我对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
答案 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]
表示:根据内容,字典将被排序。所以我认为它可以解决问题。
但是......无法找到严格的答案,为什么字典在打印时会有这样的顺序。我想这是一个记忆问题,字典会安排自己。