Как получить все ключи из упорядоченного словаря?

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 для фото


person pobro123    schedule 17.04.2016    source источник
comment
pomocna («помощник») никогда не инициализируется и не имеет ключей.   -  person roadrunner66    schedule 17.04.2016


Ответы (3)


Это довольно старая тема для добавления нового ответа. Но когда я столкнулся с подобной проблемой и искал ее решение, я пришел к ответу на это.

Вот простой способ: мы можем отсортировать словарь в 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']
person arsho    schedule 03.04.2017

Правильный способ создания экземпляра объекта в Python выглядит следующим образом:

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

Вы присваивали ссылку на класс.

person Óscar López    schedule 17.04.2016

Для тех, кто оказывается здесь, когда на самом деле хочет вот этого:

dict_keys = list(my_dict.keys())

Как вернуть ключи словаря в виде списка в Python?< /а>

person KasperGL    schedule 26.03.2021