【问题标题】:Unexpected output in dictionary [duplicate]字典中的意外输出[重复]
【发布时间】:2013-10-13 11:29:42
【问题描述】:

我试图学习如何在 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

【问题讨论】:

  • 字典无序...常见问题解答
  • 改用 OrderedDict

标签: python python-2.7 dictionary


【解决方案1】:

如果有人可以向我解释这个输出,那就太好了。查看第一个输出的预期输出是

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

【讨论】:

    【解决方案2】:

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

    要按顺序从字典中获取项目,请使用OrderedDict,或者按照您希望它们被获取的顺序创建一个键列表,然后遍历该列表。列表(和元组)保持它们的顺序。

    k = ['name', 'age', 'country']
    
    for i in k:
       d[i]
    

    【讨论】:

      【解决方案3】:

      根据@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

      【讨论】:

      • 感谢您指定 OrderedDict 的示例
      • 我没有建议 OrderedDict 是 Burhan。
      • 修复:) 复制错误....
      猜你喜欢
      • 2013-07-07
      • 2013-02-02
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2020-07-20
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多