1. ホーム
  2. python

[解決済み] Pythonのdict.keys()はなぜセットではなくリストを返すのですか?

2022-12-18 08:34:16

質問

Pythonのkeysメソッドは、リストではなくセットを返すと予想していました。 なぜなら、それはハッシュマップのキーが与える保証の種類に最もよく似ているからです。 具体的には、それらは一意であり、セットのようにソートされません。 しかし、このメソッドはリストを返します。

>>> d = {}
>>> d.keys().__class__
<type 'list'>

これは単にPython APIのミスなのか、それとも私が見逃している何か他の理由があるのでしょうか?

どのように解決するのですか?

理由のひとつは dict.keys() が言語に集合を導入する以前のものだからです。

の戻り値の型は dict.keys() は Python 3 で変更されました。この関数は現在 "set-like" を返します。 ビュー を返すようになりました。

セットライクなビューの場合、抽象的な基底クラスである collections.abc.Set が利用できます(例えば == , < または ^ ).