【问题标题】:Implementing for loop on a dictionary in Python [duplicate]在Python中的字典上实现for循环[重复]
【发布时间】:2013-01-15 13:52:52
【问题描述】:

可能重复:
python looping seems to not follow sequence?
In what order does python display dictionary keys?

d = {'x': 9, 'y': 10, 'z': 20}
for key in d: 
    print d[key]

上面的代码每次运行时都会给出不同的输出。不是完全不同的输出,而是以不同的顺序输出。我使用 Aptana 3 多次执行代码。

第一次执行: 10 9 20

第二次执行: 20 10 9

我还在在线 IDE http://labs.codecademy.com 中执行了代码。那里的输出总是 10 9 20

我只是想知道这是为什么。理想情况下,每次执行上述代码时它都应该打印 9 10 20 。请解释。

【问题讨论】:

  • Python 字典没有固定的顺序。

标签: python


【解决方案1】:

字典是键到值的映射;它没有订单。

你想要一个collections.OrderedDict

collections.OrderedDict([('x', 9), ('y', 10), ('z', 20)])
Out[175]: OrderedDict([('x', 9), ('y', 10), ('z', 20)])

for key in Out[175]:
    print Out[175][key]

但是请注意,字典排序确定性的——如果您对同一个字典进行两次迭代,您将得到相同的结果。

【讨论】:

  • @root 我有一个 ipython 可以从头开始 =)
【解决方案2】:

字典是无序的集合。因此,理论上元素的顺序可能会随着您对其执行的每个操作而改变。如果您希望按顺序打印密钥,则必须在打印前对其进行排序(即收集密钥然后对其进行排序)。

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2019-07-26
    • 2015-07-28
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多