Подтвердить что ты не робот

Как изменить порядок ключей в python dict?

Это мой код:

a = {0:'000000',1:'11111',3:'333333',4:'444444'}

for i in a:
    print i

он показывает:

0
1
3
4

но я хочу, чтобы он показывал:

4
3
1
0

Итак, что я могу сделать?

4b9b3361

Ответ 1

Ключи заказа повторяются в произвольном порядке. Просто совпадение было в порядке сортировки.

>>> a = {0:'000000',1:'11111',3:'333333',4:'444444'}
>>> a.keys()
[0, 1, 3, 4]
>>> sorted(a.keys())
[0, 1, 3, 4]
>>> reversed(sorted(a.keys()))
<listreverseiterator object at 0x02B0DB70>
>>> list(reversed(sorted(a.keys())))
[4, 3, 1, 0]

Ответ 2

Словари неупорядочены, поэтому вы не можете их отменить. Порядок выходного тока произвольный.

Тем не менее, вы можете заказать ключи, конечно:

for i in sorted(a.keys(), reverse=True):
    print a[i];

но это дает вам обратный порядок отсортированных ключей, не обязательно обратный порядок ключей, как они были добавлены. То есть он не даст вам 1 0 3, если ваш словарь:

a = {3:'3', 0:'0', 1:'1'}

Ответ 3

Try:

for i in sorted(a.keys(), reverse=True):
    print i

Ответ 4

Python dict не заказан в 2.x. Но есть упорядоченная реализация dict в 3.1.

Ответ 5

Словари Python не имеют никакого "порядка", связанного с ними. Это просто "совпадение", что дикт печатает один и тот же порядок. Нет гарантий, что элементы в словаре выходят в любом порядке.

Если вы хотите иметь дело с заказом, вам нужно будет преобразовать словарь в список.

a = list(a) # keys in list
a = a.keys() # keys in list
a = a.values() # values in list
a = a.items() # tuples of (key,value) in list

Теперь вы можете отсортировать список как обычно, например, a.sort(), и отменить его, например, a.reverse()

Ответ 6

for i in reversed(sorted(a.keys())):
    print i

Ответ 7

Поскольку Python 3.7 предписывает сохранить порядок, это означает, что вы можете сделать это сейчас:

my_dict = {'a': 1, 'c': 3, 'b': 2}

for k in reversed(list(my_dict.keys())):
    print(k)

Выход:

b
c
a

Поскольку Python 3.8 встроенный reversed() также принимает диктовки, вы можете использовать:

for k in reversed(my_dict):
    print(k)

Ответ 8

просто попробуй,

ВХОД: a = {0: "000000", 1: "11111", 3: "333333", 4: "444444"}

[x for x in sorted(a.keys(), reverse=True)]

ВЫХОД: [4, 3, 1, 0]