1

我有这个有序的字典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

4 回答 4

2

reversed是要走的路,但如果你想继续切片:

for k, v in od.items()[::-1]:
    print k, v
于 2019-01-22T06:47:55.950 回答
2

利用reversed

前任:

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
于 2019-01-22T06:46:42.720 回答
0

这是因为您在列表切片中存在错误。

for k,v in od.items()[-1:] 从最后一个元素迭代到结尾(仅打印最后一个元素)

理解切片符号

如果您只想更改代码

for k,v in od.items()[::-1]: # iterate over reverse list using slicing
    print(k,v)
于 2019-01-22T07:23:25.320 回答
0
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)])
于 2019-01-22T07:24:41.210 回答