如何解决无法散列的类型:'list' 错误

How to resolve unhashable type: 'list' error

在 fowling 代码中,用户输入两个列表,第一个输入是一个整数(N),显示第一个列表(l1)中元素的数量,第三个输入(M)是一个整数显示第二个列表中的元素数(l2).

输入如下:

4
apple32
banana2
tomato3
potato
3
carrot
apple32
banana2

因为 apple32banana2 在两个列表中,因此输出应该是 2 这意味着两个列表中有两个重复的元素。我的代码出现错误:无法散列的类型:'list'

N = int(input() )
l1 = [[x for x in input().split()] for _ in range(N)]
M = int(input() )
l2 = [[x for x in input().split()] for _ in range(M)]
print(len(set(l1).intersection(l2)))

看你的理解嵌套

l1 = [[x for x in input().split()] for _ in range(N)]

这样的结果是一个列表的列表,每个列表包含一个字符串,比如

[['apple'], ['banana'], ['carrot']]

列表不是可哈希项;你不能用它做一套。

De-nest你的理解:

l1 = [x for x in input().split() for _ in range(N)]

... 然后应用 juanpa 的简化。这将为您留下一个字符串列表。您可以将 intersection 直接应用于这些结构。