我有两个列表,基本上需要根据它们的匹配项(list)相互映射。输出是映射的对的列表。当要映射的列表的长度为1时,我们可以在另一个列表中查找直接匹配项。当要映射的列表的长度大于1时,如果A中的列表是B的子集,就会出现问题
输入:
A = [['point'], ['point', 'floating']]
B = [['floating', 'undefined', 'point'], ['point']]
我失败的代码:
C = []
for a in A:
for b in B:
if a == b:
C.append([a, b])
else:
if set(a).intersection(b):
C.append([a, b])
print C
预期输出:
C = [
[['point'], ['point']],
[['point', 'floating'], ['floating', 'undefined', 'point']]
]
出于兴趣,这里有一个使用
itertools.ifilter
的“单行”实现。你知道吗编辑:
阅读了关于这个问题的最新评论,我想我可能误解了什么才是真正的匹配。在这种情况下,这样的事情可能更合适。你知道吗
不管怎样,基本概念都是一样的。只需更改lamba中的条件,以完全匹配您想要匹配的内容。你知道吗
只需在
elif
语句中添加一个长度条件:输出:
相关问题 更多 >
编程相关推荐