如何解决无法散列的类型:'list' 错误
How to resolve unhashable type: 'list' error
在 fowling 代码中,用户输入两个列表,第一个输入是一个整数(N)
,显示第一个列表(l1)
中元素的数量,第三个输入(M)
是一个整数显示第二个列表中的元素数(l2)
.
输入如下:
4
apple32
banana2
tomato3
potato
3
carrot
apple32
banana2
因为 apple32
和 banana2
在两个列表中,因此输出应该是 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
直接应用于这些结构。
在 fowling 代码中,用户输入两个列表,第一个输入是一个整数(N)
,显示第一个列表(l1)
中元素的数量,第三个输入(M)
是一个整数显示第二个列表中的元素数(l2)
.
输入如下:
4
apple32
banana2
tomato3
potato
3
carrot
apple32
banana2
因为 apple32
和 banana2
在两个列表中,因此输出应该是 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
直接应用于这些结构。