[解決済み] 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
が利用できます(例えば==
,<
または^
).
関連
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] と'is'のどちらかを使って文字列を比較すると、異なる結果になることがあるのはなぜですか?
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] Pythonのif文における&&(論理和)に相当する機能
-
[解決済み] Pythonのtime.time()はローカルタイムスタンプとUTCタイムスタンプのどちらを返すのでしょうか?
-
[解決済み】Pythonで辞書のキーをリストとして返すには?
-
[解決済み】Pythonの「private」メソッドは、なぜ実際にはprivateではないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例