Python の keys メソッドがリストではなくセットを返すことを期待していました。それは、ハッシュマップのキーが与える保証の種類に最もよく似ているためです。具体的には、それらは一意であり、セットのように並べ替えられていません。ただし、このメソッドはリストを返します。
>>> d = {}
>>> d.keys().__class__
<type 'list'>
これは Python API の単なる間違いですか、それとも他に何か理由がありますか?
Python の keys メソッドがリストではなくセットを返すことを期待していました。それは、ハッシュマップのキーが与える保証の種類に最もよく似ているためです。具体的には、それらは一意であり、セットのように並べ替えられていません。ただし、このメソッドはリストを返します。
>>> d = {}
>>> d.keys().__class__
<type 'list'>
これは Python API の単なる間違いですか、それとも他に何か理由がありますか?
理由の 1 つはdict.keys()
、言語にセットが導入されるよりも前のことです。
の戻り値の型が Python 3 で変更されたことに注意してください。この関数は、リストではなくdict.keys()
「セットのような」ビューを返すようになりました。
セットのようなビューの場合、抽象基本クラスに対して定義されたすべての操作
collections.abc.Set
を使用できます (たとえば、==
、<
または^
)。
順序が保証されているためです。
Python 3.7.0では、dict オブジェクトの挿入順序保存の性質は、Python 言語仕様の公式の一部であると宣言されています。したがって、あなたはそれに依存することができます。
Python 3.6 では、cpython を使用すると順序付けられます。
以前のバージョンでは、おそらく誰もが 3.7 を望んでいました。
の