字典中的意外输出

时间:2013-10-13 11:29:42

标签: python python-2.7 dictionary

我试图学习在python中使用字典并制作两个非常短的程序。我对程序的输出有疑问。这是代码。

d = {}
d[0] = '0'
d[1] = '1'
d[2] = '2'
for keys in d:
   print d[keys]

它给出了以下输出

0
1
2

但是,当我制作以下程序时。

d = {}
d['name'] = "Pratik"
d['age'] = 17
d['country'] = "India"
for keys in d:
    print d[keys]

它提供了以下输出

India
17
Pratik

如果有人能向我解释这个输出,那将是很棒的。 查看第一个输出的预期输出是

Pratik
17
India

3 个答案:

答案 0 :(得分:2)

  

如果有人能向我解释这个输出,那将是很棒的。查看第一个输出的预期输出是

字典不是有序的,它们是简单的哈希表。

答案 1 :(得分:2)

埃米尔给了你解释;扩展它 - 字典是任意排序这意味着有一个订单,而不是一个你可以依赖的订单(或者一个有意义的订单,就像在你的情况下是一个数字订单)。

要从订单中的字典中获取项目,请使用OrderedDict,或按照您希望获取的顺序创建密钥列表,然后单步执行列表。列表(和元组)保留其顺序。

k = ['name', 'age', 'country']

for i in k:
   d[i]

答案 2 :(得分:1)

根据@Burhan Khalid的建议,你可以使用有序词典,一个快速的例子:

from collections import OrderedDict

d = OrderedDict()
d['name'] = "Pratik"
d['age'] = 17
d['country'] = "India"

print d
  

OrderedDict([('name','Pratik'),('age',17),('country','India')])

您可以阅读更多here