use*_*317 4 python reverse dictionary python-3.x
我有一个有序的字典,我试图以相反的顺序通过它,基本上从插入的最后一个(键,值)开始.
dicts = OrderedDict()
...
for key, value in reversed(dicts.items()):
Run Code Online (Sandbox Code Playgroud)
当我在Python 3.5.1中使用PyCharm时,上面的代码工作正常,但是当我将它放在codefights上时,使用他们的Python 3解释器(不知道确切的版本),我得到for循环实现的下面的错误:
TypeError: argument to reversed() must be a sequence
Run Code Online (Sandbox Code Playgroud)
为什么会发生此错误,我该如何解决?
根据文档,OrderedDict.items()仅支持reversed3.5,所以我希望它是旧版本.
您可以解决的一种方法是首先转换为列表:
for key, value in reversed(list(dicts.items())):
...
Run Code Online (Sandbox Code Playgroud)
注意:根据评论,dicts.items()应该是内存效率,但list(dicts.items())肯定会创建一个长度为项目数的新列表dicts.大多数情况下,这应该没问题,但是对于非常大的情况,dicts这将会看到O(N)内存使用率可能会很高.
| 归档时间: |
|
| 查看次数: |
2306 次 |
| 最近记录: |