反转的OrderedDict TypeError

时间:2017-03-15 15:58:08

标签: python python-3.x dictionary reverse

我有一个有序的字典,我试图以相反的顺序浏览它,基本上从插入的最后一个(键,值)开始。

dicts = OrderedDict()
...
for key, value in reversed(dicts.items()):

当我在Python 3.5.1中使用PyCharm时,上面的代码工作正常,但当我将它放在codefights上时,使用他们的Python 3解释器(不知道确切的版本),我得到for循环实现的下面的错误:

TypeError: argument to reversed() must be a sequence

为什么会发生此错误以及如何解决?

1 个答案:

答案 0 :(得分:9)

根据the docsOrderedDict.items()仅支持来自3.5的reversed,所以我希望它是旧版本。

您可以解决的一种方法是首先转换为列表:

for key, value in reversed(list(dicts.items())):
     ...

NB :根据评论,dicts.items()应该具有内存效率,但list(dicts.items())肯定会创建一个新列表,其长度为dicts中的项目数。大多数情况下,这应该没问题,但是对于非常大的dicts,这将会看到O(N)内存使用量可能会很大。