今晚看到了这个问题。在此之前我从未听说过future_builtins
,这让我感到疑惑。future_builtins
仅涵盖几种类型,并且dict
不是其中之一。有没有办法使用在 Python 2.7中使用视图的Python 3dict
行为?这在尝试编写 Python 3 兼容代码时特别有用。在 Python 2 中,这些方法具有创建s 的开销,并且迭代器版本在 Python 3 中消失了。但使用它们是编写 Python 3 兼容代码的建议。items
keys
values
list
问问题
1632 次
1 回答
3
您可以在 py2x中使用viewkeys()
,viewitems()
和viewvalues()
>>> dict.viewkeys?
Type: method_descriptor
String Form:<method 'viewkeys' of 'dict' objects>
Namespace: Python builtin
Docstring: D.viewkeys() -> a set-like object providing a view on D's keys
- dict 方法
dict.keys()
,dict.items()
并dict.values()
返回“视图”而不是列表。例如,这不再有效k = d.keys()
:k.sort()
. 改为使用k = sorted(d)
(这也适用于 Python 2.5,并且同样有效)。- 此外,不再支持
dict.iterkeys()
,dict.iteritems()
和方法。dict.itervalues()
与 Guido 交谈后,摆脱了未来的导入魔法,转而只提供
viewkeys
,viewitems
和viewvalues
dicts 的方法。这使得高效的 2.6 和 3.0dict
使用代码可能通过2to3
将view
-methods 直接转换为 3.0 中的keys
/values
/items
,而不是将所有内容包装在list()
.
2to3
工具:
RefactoringTool: Refactored so.py
--- so.py (original)
+++ so.py (refactored)
@@ -1 +1 @@
-print dic.viewkeys()
+print(dic.keys())
于 2013-05-17T04:12:03.683 回答