Это мой код:
a = {0:'000000',1:'11111',3:'333333',4:'444444'}
for i in a:
print i
он показывает:
0
1
3
4
но я хочу, чтобы он показывал:
4
3
1
0
Итак, что я могу сделать?
Это мой код:
a = {0:'000000',1:'11111',3:'333333',4:'444444'}
for i in a:
print i
он показывает:
0
1
3
4
но я хочу, чтобы он показывал:
4
3
1
0
Итак, что я могу сделать?
Ключи заказа повторяются в произвольном порядке. Просто совпадение было в порядке сортировки.
>>> 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]
Словари неупорядочены, поэтому вы не можете их отменить. Порядок выходного тока произвольный.
Тем не менее, вы можете заказать ключи, конечно:
for i in sorted(a.keys(), reverse=True):
print a[i];
но это дает вам обратный порядок отсортированных ключей, не обязательно обратный порядок ключей, как они были добавлены. То есть он не даст вам 1 0 3
, если ваш словарь:
a = {3:'3', 0:'0', 1:'1'}
Try:
for i in sorted(a.keys(), reverse=True):
print i
Python dict не заказан в 2.x. Но есть упорядоченная реализация dict в 3.1.
Словари 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()
for i in reversed(sorted(a.keys())):
print i
Поскольку 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)
просто попробуй,
ВХОД: a = {0: "000000", 1: "11111", 3: "333333", 4: "444444"}
[x for x in sorted(a.keys(), reverse=True)]
ВЫХОД: [4, 3, 1, 0]