Как отсортировать словарь в Python с помощью перечисления? - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть следующий код

for index,(key,value) in enumerate(dict_var.items()):
    sorted_dict[index] = (key, value)

print("The sorted list is:{}".format(sorted_dict))

, где

  • dict_var - это словарь.
  • sorted_dict - список, в котором ключи и значения dict_var хранятся в отсортированном порядке.

Кто-нибудь может объяснить, почему этот код не работает?

Я получаю эту ошибку:

sorted_dict [индекс] = (ключ, значение)
IndexError: индекс назначения списка вне диапазона

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018
sorted_dict = [] 
sorted_dict[0] = 1 #IndexError: list assignment index out of range

Индекс специально используется для доступа к существующей позиции в списке python и не создает список в молчании для размещения вне индексов диапазона. Эта проблема не имеет ничего общего с перечислением.

Вы можете просто использовать .append () списка для добавления элементов в конце. Пример:

sorted_dict = []
for key,value in dict_var.items():
    sorted_dict.append((key, value))

print("The sorted list is:{}".format(sorted_dict))
0 голосов
/ 11 ноября 2018

Вы получаете ошибку индекса, потому что len dict_var больше, чем len sorted_dict. Чтобы избежать этой ошибки, убедитесь, что размер списка больше или равен размеру len sorted_dict. Если бы вы могли показать нам, как выглядит sorted_dict, прежде чем запускать код, это также поможет. Кроме того, может быть плохой идеей назвать список sorted_dict. sorted_list было бы лучше. Вы также можете избежать этой ошибки с помощью:

for key, value in dict_var.items():
    sorted_dict.append((key, value))
...