【问题标题】:arranging keys in dict python [duplicate]在dict python中排列键[重复]
【发布时间】:2016-05-13 12:28:43
【问题描述】:

有没有一种简单的方法可以在列表键之间创建层次结构,以便我以后可以按顺序选择它们并将它们与布尔值进行比较?

我的字典。看起来像这样:

names = {
    "21": "Mayer",
    "31": "Lille Mayer",
    "11": "Par 1",
    "22": "Par 2",
    "33": "Par 3",
    "44": "Par 4",
    "55": "Par 5",
    "66": "Par 6"}

我想按这种模式排列键:

h = names["21"] > names["31"] > names["66"] > names["55"] > names["44"] > names["33"] > names["22"] > names["11"]

谢谢

【问题讨论】:

    标签: python dictionary key


    【解决方案1】:

    python 字典对象的键未排序,并且随着哈希映射的更新顺序不一致。

    您有几个选择...一种是单独创建一个list() 的键并根据需要对它们进行排序,或者您可以使用OrderedDict

    https://docs.python.org/2/library/collections.html#collections.OrderedDict

    【讨论】:

    • 谢谢。 OrderedDict 属于哪个模块?
    • 收藏。从集合导入 OrderedDict
    • 谢谢。我需要使用什么前缀 OrderedDict ?我试过 od.OrderedDict 但它似乎不起作用。
    • 这取决于你如何导入它。如果你使用'import collections',那么你会通过'collections.OrderedDict()'调用OrderedDict,如果你使用'from collections import OrderedDict',那么它就是'OrderedDict()'
    • 似乎无法正常工作。
    【解决方案2】:

    您不能重新排列/排序字典中的条目,因为它们没有顺序。但是,您可以在迭代它们时对它们进行排序,例如在打印或将它们转换为列表时。

    for key in sorted(names):
        print names[key]
    

    【讨论】:

      【解决方案3】:

      来自python的docs

      iter(dictview)

      Return an iterator over the keys, values or items (represented as tuples 
      

      of (key, value)) 在字典中。

      Keys and values are iterated over in an arbitrary order which is 
      

      非随机的,因 Python 实现而异,并且取决于 字典的插入和删除历史。如果键、值和项视图被迭代而没有对字典进行干预修改,则项的顺序将直接对应。

      我会尝试包含顺序,因为您似乎没有删除值。

      【讨论】:

        猜你喜欢
        • 2011-11-12
        • 1970-01-01
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 2013-05-22
        • 1970-01-01
        • 2021-05-23
        相关资源
        最近更新 更多