今晚我看到了this question。在此之前我從來沒有聽說過future_builtins
,這讓我感到疑惑。 future_builtins
只涵蓋幾種類型,並且dict
不是其中之一。有沒有辦法在Python 2.7中使用使用視圖items
,keys
和values
的Python 3 dict
行爲?這在嘗試編寫Python 3兼容代碼時特別有用。在Python 2中,這些方法具有創建list
的開銷,並且迭代器版本在Python 3中消失。但是,使用它們是編寫Python 3兼容代碼的建議。Python 3在Python 2中的字典行爲
回答
您可以在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.keys()
,dict.items()
和dict.values()
回報,而不是列出「意見」。例如,這不再起作用:k = d.keys()
;k.sort()
。改用k = sorted(d)
(這也適用於Python 2.5,效率也一樣)。- 此外,不再支持
dict.iterkeys()
,dict.iteritems()
和dict.itervalues()
方法。
交談圭多後,得到的只是提供 類型的字典
viewkeys
,viewitems
和viewvalues
方法有利於 擺脫今後進口的魔力。這使得高效的2.6和3.0dict
- 使用代碼可能由 使2to3
在 3.0view
- 方法轉換直接keys
/values
/items
,並在list()
沒有包裝的一切。
2to3
工具:提出
RefactoringTool: Refactored so.py
--- so.py (original)
+++ so.py (refactored)
@@ -1 +1 @@
-print dic.viewkeys()
+print(dic.keys())
不幸的是,它看起來像Python 3也會消失。遊民。 (對不起,在你回答時偷偷摸摸的編輯。) – jpmc26
@ jpmc26是的,這些被py3x中的'keys()','values()'所取代。 –
@ jpmc26你可以使用'2to3'工具,在py2x中編寫代碼並獲得它的等效py3x版本。 –
- 1. 生成器在Python 2和Python 3中統一遍歷字典
- 2. Python 3詞典中的字典
- 3. Python 3中,編碼字典
- 4. 字典理解在Python 3
- 5. Python 3中的Unicode字符與Python 2
- 6. 的Python:字典有3項
- 7. 2字典在python中的組合
- 8. 替換字典中的字符--Python 3
- 9. 的Python做2個字典
- 10. 的Python 2 dict_items.sort()在Python 3
- 11. Python中的字典的靜態行爲
- 12. 在Python 3中顛倒排序字典
- 13. 在Python 3.x中迭代字典
- 14. Python 3:將列表轉換爲字典
- 15. python 3保存字典
- 16. 排序字典python 3
- 17. 在Python 2中搜索字典
- 18. 在Python中合併2個字典
- 19. 在python中循環2個字典
- 20. 在python中使用2個字典
- 21. Python字典w/2鍵?
- 22. 比較python中的2個字典
- 23. Python 2 to python 3
- 24. Python 2 + Python 3 +庫
- 25. Python 3:創建字典/爲嵌套字典添加值
- 26. 如何將字符串轉換爲Python 3中的字典。
- 27. Python 2 str.decode('hex')在Python 3中?
- 28. Python在字典內打印3個值
- 29. Python中的字典詞典!
- 30. 字典在python字典
類似的事情,但她們更喜歡將'viewkeys()'的'以上來自進口__future__ ..',HTTP方法'dict'://bugs.python .org/issue1967 –