【问题标题】:Preserve original dict order rather than random? [duplicate]保留原始的字典顺序而不是随机的? [复制]
【发布时间】:2014-04-29 16:59:44
【问题描述】:

如果你看下面的代码:

examples = {"Main 1": "blabla", "Main 2": "test", "Main 3": "ya", "Main 4": "ha", "Main 5": "no", "Main 6": "blabla", "Main 7": "test", "Main 8": "ya", "Main 9": "ha", "Main 10": "no", "Main 11": "blabla", "Main 12": "test", "Main 13": "ya", "Main 14": "ha", "Main 15": "no", "Main 16": "boo", "Main 17": "blabla", "Main 18": "test", "Main 19": "ya", "Main 20": "ha", "Main None": "None",}

for example in examples.keys():
    print example

它打印以下内容:

Main 1
Main 14
Main 3
Main 2
Main 5
Main 4
Main 7
Main 6
Main 9
Main 8
Main None
Main 12
Main 19
Main 17
Main 18
Main 16
Main 13
Main 15
Main 20
Main 11
Main 10

如何使它保持字典顺序,使其变为 1、2、3、4、5、6、7...等

【问题讨论】:

  • Python 字典没有排序。您不能保留初始顺序;请改用collections.OrderedDict()
  • 另一种方法是对您的密钥进行排序;不过需要自然排序。
  • 快速搜索“排序字典 python”或“排序字典 python”返回 docs.python.org/2/library/collections.html。请参考stackoverflow.com/questions/how-to-ask的“搜索和研究”部分
  • 最后但同样重要的是,.keys() 调用是多余的;您可以直接遍历字典并仍然获取键:for example in examples:.

标签: python python-2.7 dictionary


【解决方案1】:

普通字典由hash table 构造而成,不保留顺序。请改用标准库 collections 模块中的 OrderedDict

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多