次のことを効果的に行うプログラムを実行しようとしています。
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]):
....
あなたが望むものに応じて