-1

今夜、この質問を見ました。これまで聞いたことがなかったので、future_builtins不思議に思いました。future_builtinsいくつかのタイプのみをカバーしておりdict、それらの 1 つではありません。、、およびPython 2.7dictのビューを使用する Python 3 の動作を使用する方法はありますか? これは、Python 3 互換のコードを作成しようとする場合に特に役立ちます。Python 2 では、これらのメソッドには s を作成するオーバーヘッドがあり、イテレータ バージョンは Python 3 で廃止されます。それでも、Python 3 互換のコードを作成するには、これらのメソッドを使用することをお勧めします。itemskeysvalueslist

4

1 に答える 1

3

viewkeys()viewitems()およびviewvalues()py2xで使用できます。

>>> 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

Python 3.0 の新機能:

  • dict メソッドdict.keys()を使用し、リストの代わりに「ビュー」dict.items()を返します。dict.values()たとえば、これは機能しなくなりましたk = d.keys()k.sort(). 代わりに使用してくださいk = sorted(d)(これは Python 2.5 でも機能し、同様に効率的です)。
  • また、、dict.iterkeys()およびdict.iteritems()メソッドdict.itervalues()はサポートされなくなりました。

バグ: dictviews を 2.7 にバックポート:

Guido と話した後、将来のインポート マジックを取り除きviewkeysviewitemsおよびviewvaluesdict のメソッドを提供するだけにしました。これにより、効率的な 2.6 および 3.0 をdict使用するコードが作成されます。おそらく、3.0ではメソッドを//に直接2to3変換し、 すべてを でラップするのではありません。viewkeysvaluesitemslist()

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 に答える