【发布时间】:2021-01-28 08:27:19
【问题描述】:
在 fowling 代码中,用户输入两个列表,第一个输入是整数(N),显示第一个列表中的元素数量(l1),第三个输入(M) 是一个整数,显示第二个列表中的元素数量@ 987654324@.
输入如下:
4
apple32
banana2
tomato3
potato
3
carrot
apple32
banana2
由于apple32 和banana2 都在两个列表中,因此输出应该是2,这意味着两个列表中有两个元素重复。我的代码出现错误:unhashable type: '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)))
【问题讨论】:
-
intersection将set作为参数;你给它一个list。 -
@ScottHunter 不,它需要任何可迭代的。
-
无论如何,您正在尝试对列表进行哈希处理,
l1是一个包含列表的列表。您尝试将其放入set但列表中的list对象不可散列,如错误消息所述。不要尝试散列列表。这就是解决方案。 -
你为什么要这样?
[[x for x in input().split()] for _ in range(N)]注意,这只是写[input.split() for _ in range(N)]的罗嗦方式。但是你为什么要分裂?你可能只想要[input() for _ in range(N)]在任何情况下,你真的应该尝试自己调试这些小程序。 StackOverflow 不是调试服务。你至少应该做一些研究,也许是一些调试打印等等,然后在问题中,告诉我们确切地你不明白什么
标签: python list hash hashtable