Python dict以意想不到的顺序打印出值

时间:2017-10-14 12:41:25

标签: python dictionary

有人可以帮我解决python中的dict吗?

我用一个print语句制作了一个dict,如下所示:

role = {
    'user': 1,
    'moderator': 2,       
    'admin': 3
}

for r in role:
    print role[r]

我认为结果将是

1
2
3

但实际打印出

2
3
1

谁能告诉我为什么?

2 个答案:

答案 0 :(得分:0)

From the docs

  

...没有维护键的排序顺序,并且.keys()和.items()的遍历将以某种任意混乱的顺序输出字典的内容。

因此,当您将此类物品粘贴到dict时,您无法保证任何订单。如果您需要维护订单,则需要使用列表。

如果要根据值中的数字打印这些项目,可以执行以下操作:

for r in sorted(role.items(), key=lambda x: x[1]):
    print r

输出:

('user', 1)
('moderator', 2)
('admin', 3)

或者只是将它们存储在一个列表中:

role = ['user', 'moderator', 'admin']
for r in role:
    print r

答案 1 :(得分:0)

常规字典不会维护插入元素的顺序,因为字典只是哈希表的一种形式,而您可以使用有序字典link