我经历过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的一部分?
我试着使用intersect(a,b)如http://www.saltycrane.com/blog/2008/01/how-to-find-intersection-and-union-of/所述 但是,当我试图将A转换为set时,它会抛出一个错误:
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)
一个元组,然后元组可以转换成一个集合。但是,这将返回一个空集合作为交集。
你能帮我找到十字路口吗?
您的数据结构有点奇怪,因为它是字符串的一个元素列表;您希望将它减少为字符串列表,然后可以应用以前的解决方案:
因此一个列表如下:
可以转换为在
'23@N0', '12@N1'
上迭代的迭代器有了
itertools.chain(*)
,我们就有了简单的一行:您可以使用
compiler.ast
模块的flatten
函数展平子列表,然后应用这样的集合交集问题是您的列表包含子列表,因此无法将它们转换为集合。试试这个:
相关问题 更多 >
编程相关推荐