Есть ли способ напечатать словарь в обратном порядке? - PullRequest
0 голосов
/ 22 января 2019

У меня есть заказанный dict od:

OrderedDict([('and', 1), ('that', 1), ('this', 1), ('of', 1), ('truly', 1), ('something', 1), ('nothing', 1), ('important', 2), ('is', 3)])

Я пытаюсь напечатать пары ключ-значение этого словаря в обратном порядке. Я попробовал это:

for k,v in od.items()[-1:]:
    print k,v

Он печатает:

is 3

Но он печатает только последнюю пару значений ключа, т.е. ('is',3). Я хочу, чтобы все пары ключ-значение были в обратном порядке, например:

is 3
important 2
nothing 1
something 1
truly 1
of 1
this 1
that 1
and 1

Есть ли способ?

Ответы [ 4 ]

0 голосов
/ 22 января 2019
od = OrderedDict([('and', 1), ('that', 1), ('this', 1), ('of', 1), ('truly', 1), ('something', 1), ('nothing', 1), ('important', 2), ('is', 3)])
od_list=[i for i in od.items()]

#Reverse the list
od_list.reverse()

#Create the reversed ordered List.
od_reversed=OrderedDict(od_list)
print(od_reversed)
    OrderedDict([('is', 3),
             ('important', 2),
             ('nothing', 1),
             ('something', 1),
             ('truly', 1),
             ('of', 1),
             ('this', 1),
             ('that', 1),
             ('and', 1)])
0 голосов
/ 22 января 2019

reversed это путь, но если вы хотите остаться с нарезкой:

for k, v in od.items()[::-1]:
    print k, v
0 голосов
/ 22 января 2019

Это потому, что у вас есть ошибка в нарезке списка.

for k,v in od.items()[-1:] перебирает от последнего элемента до конца (печатает только последний элемент)

Понимание обозначения среза

В случае, если вы хотите просто изменить свой код

for k,v in od.items()[::-1]: # iterate over reverse list using slicing
    print(k,v)
0 голосов
/ 22 января 2019

Использование reversed

Ex:

from collections import OrderedDict

d = OrderedDict([('and', 1), ('that', 1), ('this', 1), ('of', 1), ('truly', 1), ('something', 1), ('nothing', 1), ('important', 2), ('is', 3)])

for k, v in reversed(d.items()):   #or for k, v in d.items()[::-1]
    print(k, v)

Выход:

is 3
important 2
nothing 1
something 1
truly 1
of 1
this 1
that 1
and 1
...