我试图运行一个有效执行以下操作的程序:
if [4, 5, False, False, False, False] in {}
而且,就此而言,我获得了TypeError: unhashable type 'list'
我做错了什么?
答案 0 :(得分:5)
代码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()])
答案 1 :(得分:1)
set
拥有可哈希的对象,这意味着它们是可排序的,并且可以实现高效的搜索/插入方法。
另一方面,list
不可清除。这就是你的代码出错的原因。
我建议使用tuple
代替list
。
if (4, 5, False, False, False, False) in {}:
...
答案 2 :(得分:0)
您可以执行类似
的操作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]):
....
取决于你想要的东西