从Python中的另一个列表中查找包含子字符串的列表元素

2024-09-29 04:23:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的代码中,我有两个不同长度的列表,我称之为“main”和“secondary”。我需要使用次要元素来选择main中的元素。然而,secondary包含的元素只是main中字符串的子集合。代码:

main = ["pinecone", "treeleaf", "dishwasher"]
secondary = ["pine", "washer", "unrelated", "flowerbed"]

通常次要的比主要的要长得多(如果解决方案涉及到性能损失,我会提到这一点)。 我如何去选择“main”中基于“secondary”的元素,并尽可能以最有效(和python)的方式选择元素?如果它是一个函数,我想

^{pr2}$

谢谢!在


Tags: 字符串代码元素列表main解决方案性能secondary
3条回答
def select_items(strings, substrs):
    return [m for m in strings if any(s in m for s in substrs)]

天真的方法:

In [2]: main = ["pinecone", "treeleaf", "dishwasher"]

In [3]: secondary = ["pine", "washer", "unrelated", "flowerbed"]

In [4]: [x for x in main if any(x in y or y in x for y in secondary)]
Out[4]: [u'pinecone', u'dishwasher']

当主列表和辅助列表相同时,类似的方法也会起作用:

In [2]: main = ["pinecone", "treeleaf", "dishwasher"] + ["pine", "washer", "unrelated", "flowerbed"]

In [4]: [x for x in main for y in main if y in x and x != y]
Out[4]: ['pinecone', 'dishwasher']

注意,你可以得到部分匹配的字符串(或者两者都有!)公司名称:

^{pr2}$

相关问题 更多 >