【问题标题】:How to get all keys from Ordered Dictionary?如何从有序字典中获取所有键?
【发布时间】:2016-08-08 20:43:57
【问题描述】:
def izracunaj_dohvatljiva_stanja(funkcije_prijelaza):
    dohvatljiva = []
    dohvatljiva.extend(pocetno_stanje)
    pomocna = collections.OrderedDict
    for i in xrange(len(dohvatljiva)):
        for temp in pomocna.keys(): <-----------------------------------this line
            if temp.split(',')[0] == dohvatljiva[i]:
                if funkcije_prijelaza.get(temp) not in dohvatljiva:
                    dohvatljiva.extend(funkcije_prijelaza.get(temp))

我正在尝试从有序 dict 中获取所有键,因此我可以对其进行迭代,但是在运行错误之后: click for pic

【问题讨论】:

  • pomocna ('helper') 从未初始化且没有键。

标签: python key ordereddictionary


【解决方案1】:

添加新答案是一个很老的话题。但是当我遇到类似的问题并寻找解决方案时,我来回答这个问题。

这是一个简单的方法,我们可以在 Python 3(Python 3.6 之前)中对字典进行排序。

import collections


d={
    "Apple": 5,
    "Banana": 95,
    "Orange": 2,
    "Mango": 7
}

# sorted the dictionary by value using OrderedDict
od = collections.OrderedDict(sorted(d.items(), key=lambda x: x[1]))
print(od)
sorted_fruit_list = list(od.keys())
print(sorted_fruit_list)

输出:

OrderedDict([('Orange', 2), ('Apple', 5), ('Mango', 7), ('Banana', 95)])
['Orange', 'Apple', 'Mango', 'Banana']

更新:

从 Python 3.6 及更高版本开始,我们可以按字典的值对字典进行排序。

d={
    "Apple": 5,
    "Banana": 95,
    "Orange": 2,
    "Mango": 7
}

sorted_data = {item[0]:item[1] for item in sorted(d.items(), key=lambda x: x[1])}
print(sorted_data)
sorted_fruit_list = list(sorted_data.keys())
print(sorted_fruit_list)

输出:

{'Orange': 2, 'Apple': 5, 'Mango': 7, 'Banana': 95}
['Orange', 'Apple', 'Mango', 'Banana']

【讨论】:

    【解决方案2】:

    在 Python 中实例化对象的正确方法是这样的:

    pomocna = collections.OrderedDict() # notice the parentheses! 
    

    您正在分配对的引用。

    【讨论】:

      【解决方案3】:

      对于那些真正想要的是:

      dict_keys = list(my_dict.keys())
      

      How to return dictionary keys as a list in Python?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-18
        • 2022-08-14
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 2023-02-04
        • 1970-01-01
        • 2016-05-27
        相关资源
        最近更新 更多