【发布时间】:2015-02-24 08:48:30
【问题描述】:
我经历过Find intersection of two lists?、Intersection of Two Lists Of Strings、Getting intersection of two lists in python。但是,我无法解决使用 Python 查找两个字符串列表之间的交集的问题。
我有两个变量。
A = [['11@N3'], ['23@N0'], ['62@N0'], ['99@N0'], ['47@N7']]
B = [['23@N0'], ['12@N1']]
如何找到 '23@N0' 是 A 和 B 的一部分?
我尝试使用 http://www.saltycrane.com/blog/2008/01/how-to-find-intersection-and-union-of/ 中提到的 intersect(a,b) 但是,当我尝试将 A 转换为集合时,它会引发错误:
File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
为了将其转换为集合,我使用了TypeError: unhashable type: 'list' when using built-in set function 中的方法,其中列表可以使用
result = sorted(set(map(tuple, A)), reverse=True)
变成一个元组,然后这个元组可以转换成一个集合。但是,这会返回一个空集作为交集。
你能帮我找到路口吗?
【问题讨论】:
-
交叉大量数据的最快方法是使用 Python 集。 Python 集是散列映射,因此它们需要散列。您的问题来自将字符串包装到列表中。列表是可变对象,这就是为什么它们不能被散列,而字符串是不可变的,可以。
-
每个列表中有一个字符串有什么原因吗?
-
这是我的数据集,不是我生成的,是从别人那里借来的。
-
@SharathChandra:“借来的”是什么意思?您是否从文件中读取过它?什么格式?
标签: python string list set intersection