我对使用C ++作为第一语言的python很陌生。 假设我有以下字典:
import data from 'generated/messages.json'
,当我如下运行循环时:
generated
我的输出按以下顺序显示:
price = {
'banana' : 3,
'apple' : 2,
'strawberry' : 6
}
我认为for循环按顺序迭代数组或列表。这不适用于字典吗?我希望结果是“香蕉,苹果,草莓”,因为在我的词典中,香蕉是第一把钥匙,草莓是最后一把钥匙。
我不理解的python2中发生了什么?
答案 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()
构造函数,也不能保证顺序。