在Python2中的字典上运行for循环时

时间:2019-03-13 22:24:39

标签: python python-2.7 dictionary for-loop iteration

我对使用C ++作为第一语言的python很陌生。 假设我有以下字典:

import data from 'generated/messages.json'

,当我如下运行循环时:

generated

我的输出按以下顺序显示:

 price = {
 'banana' : 3,
 'apple' : 2,
 'strawberry' : 6
 }

我认为for循环按顺序迭代数组或列表。这不适用于字典吗?我希望结果是“香蕉,苹果,草莓”,因为在我的词典中,香蕉是第一把钥匙,草莓是最后一把钥匙。

我不理解的python2中发生了什么?

2 个答案:

答案 0 :(得分:0)

在Python 2.7中,对字典进行迭代并不能保证键或值的返回顺序。

如果需要,您可以使用OrderedDict

在Python 3.7中,顺序显然是guaranteed,但老实说,我会使用OrderedDict只是为了确保可读性而明确声明了该顺序,如果需要的话。

答案 1 :(得分:0)

字典不记得元素插入的顺序。这就是为什么当您对其进行迭代时,顺序是任意的。另一方面,OrderedDict会跟踪所述订单。语法与使用常规字典相同,您将需要导入collections模块。就您而言

from collections import OrderedDict

price = OrderedDict()

price['banana'] = 3
price['apple'] = 2
price['strawberry'] = 6

for i in price:
   print(i)

应该给您想要的结果。

请注意,即使您可以创建常规字典并将其作为参数传递给OrderedDict()构造函数,也不能保证顺序。