我有一个有序的字典,我试图以相反的顺序浏览它,基本上从插入的最后一个(键,值)开始。
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
为什么会发生此错误以及如何解决?
答案 0 :(得分:9)
根据the docs,OrderedDict.items()
仅支持来自3.5的reversed
,所以我希望它是旧版本。
您可以解决的一种方法是首先转换为列表:
for key, value in reversed(list(dicts.items())):
...
NB :根据评论,dicts.items()
应该具有内存效率,但list(dicts.items())
肯定会创建一个新列表,其长度为dicts
中的项目数。大多数情况下,这应该没问题,但是对于非常大的dicts
,这将会看到O(N)内存使用量可能会很大。