Python TypeError:不可用类型:'list'

时间:2013-02-07 14:29:30

标签: python list set typeerror

我试图运行一个有效执行以下操作的程序:

if [4, 5, False, False, False, False] in {}

而且,就此而言,我获得了TypeError: unhashable type 'list'

我做错了什么?

3 个答案:

答案 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]):
    ....

取决于你想要的东西