次のことを効果的に行うプログラムを実行しようとしています。
if [4, 5, False, False, False, False] in {}
そして、この行で、私はTypeError: unhashable type 'list'
私は何を間違っていますか?
このコードif foo in {}
は、ディクショナリのいずれかのキーが と等しいかどうかをチェックしますfoo
。
あなたの例でfoo
は、リストです。リストはハッシュ不可の型であり、ディクショナリのキーにすることはできません。
リストのエントリが辞書のキーまたはセットに含まれているかどうかを確認したい場合は、次を試すことができます。
if any([x in {} for x in (4, 5, False)])
.
値のいずれかがリストと等しいかどうかを確認したい場合は、次を試すことができます。
if any([v == [4, 5, False, False, False, False] for v in your_dict.values()])
Aset
はハッシュ可能なオブジェクトを保持します。つまり、それらはソート可能であり、効率的な検索/挿入方法が可能になります。一方、 alist
はハッシュ可能ではありません。それがあなたのコードがエラーを起こす理由です。tuple
の代わりに使用することをお勧めしますlist
。
if (4, 5, False, False, False, False) in {}:
...
次のようなことができます
if all(x in {} for x in [4, 5, False, False, False, False]):
....
また
if any(x in {} for x in [4, 5, False, False, False, False]):
....
あなたが望むものに応じて