[解決済み】セットへのリスト追加?
2022-03-26 04:07:42
質問
Python 2.6 インタプリタでテストしています。
>>> a=set('abcde')
>>> a
set(['a', 'c', 'b', 'e', 'd'])
>>> l=['f','g']
>>> l
['f', 'g']
>>> a.add(l)
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
a.add(l)
TypeError: list objects are unhashable
Pythonが同じリストを2回追加したかどうかを判断する方法がないので、リストをセットに追加することができないのだと思います。回避策はあるのでしょうか?
EDIT: 要素ではなく、リストそのものを追加したいのですが。
解決方法は?
リストはmutableであるため、セットに追加した後にリストの内容を変更することができるからです。
しかし、タプルの内容を変更することはできないので、タプルをセットに追加することは可能です。
>>> a.add(('f', 'g'))
>>> print a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])
編集
: 少し説明します。ドキュメントでは
set
として
異なるハッシュ化可能なオブジェクトの非順序型コレクション。
オブジェクトは、要素の検索、追加、削除を、これらの操作を行うたびに個々の要素を調べるよりも高速に行えるよう、ハッシュ化可能でなければならない。具体的にどのようなアルゴリズムが使われているかは
ウィキペディアの記事
. Pythonのハッシュアルゴリズムは、以下のサイトで説明されています。
effbot.org
とpythons
__hash__
関数で
python リファレンス
.
いくつかの事実
- セット要素 と同様に 辞書キー ハッシュ化可能でなければならない
-
ハッシュ化できないデータ型もある。
-
list
を使用します。tuple
代わりに -
set
使用frozenset
代わりに -
dict
: には正式な対応表はありませんが、いくつかの レシピ
-
- オブジェクトのインスタンスは、デフォルトでハッシュ化可能で、各インスタンスは一意のハッシュを持ちます。Pythonのリファレンスで説明されているように、この動作をオーバーライドすることができます。
関連
-
Python 入出力と高次代入の基礎知識
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み] データ型が理解できない
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み】Pythonの "hashable "の意味は?