【问题标题】:what is the order of the dictionary in pythonpython中字典的顺序是什么
【发布时间】:2016-07-21 21:47:58
【问题描述】:

我对python中字典的顺序有疑问。我在 python 2.7 中

array ={"dad":"nse","cat":"error","bob":"das","nurse":"hello"}

for key in array:
    print key

为什么结果显示

dad
bob
nurse
cat

不是

dad 
cat
bob
nurse

【问题讨论】:

标签: python python-2.7 dictionary


【解决方案1】:

在标准 Python 实现中,CPython,字典没有保证顺序,per the docs

【讨论】:

    【解决方案2】:

    根据Python documentation,字典中的元素没有排序。 Python 可以按照它选择的任何顺序将条目返回给您。如果你想要一本带顺序的字典,你可以使用OrderedDict。但是,由于它必须保持有序,因此该集合的性能比普通的 Dict 差。

    【讨论】:

      【解决方案3】:

      是的,我同意,字典是一个独立的数据结构,这意味着它总是有生命的:),但是看看这个例子:

      from collections import OrderedDict
      days = {"Monday": 1, "Tuesday": 2, "Wednesday": 3, "Thursday": 4, "Friday": 5}
      print days
      sorted_days = OrderedDict(sorted(days.items(), key=lambda t: t[1]))
      print sorted_days
      print list(days)[0]
      print list(sorted_days)[0]
      

      有输出:

      {'Friday': 5, 'Tuesday': 2, 'Thursday': 4, 'Wednesday': 3, 'Monday': 1}
      OrderedDict([('Monday', 1), ('Tuesday', 2), ('Wednesday', 3), ('Thursday', 4), ('Friday', 5)])
      Friday
      Monday
      

      在 lambda 表达式中t[1] 表示:根据什么对字典进行排序。所以我认为它可能会解决问题。

      但是.. 找不到一个严格的答案,为什么字典在打印时有这样的顺序。我想这是一个记忆问题,字典在哪里排列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-13
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多