如何在列表中查找元素,该元素是Python中另一个列表中另一个元素的一部分

时间:2012-03-15 23:33:16

标签: python list find

我有这个清单:

dc = ["hello", "world"]

另一个:

lines = ["This is", "an example of hello", "line in the world of strings", "Testing"]

我希望在dc上找到那些属于行的任何元素的元素......

我可以将行循环为:

for line in lines:
    # what to do here?

但是我不知道如何确切地找到dc中的“hello”元素可以在“hello的例子”中找到,或者在“世界上的行”中找到dc中的“world”字符串“在行...

也许我不应该循环线?

2 个答案:

答案 0 :(得分:6)

>>> dc = ["hello", "world", "foo"]
>>> lines = ["This is", "an example of hello", "line in the world of strings", "Testing"]
>>> [word for word in dc if any(word in line for line in lines)]
['hello', 'world']

答案 1 :(得分:1)

使用set功能的单线程解决方案

首先从你拥有的行中获取所有单词。将它们作为一组来节省空间并获得一些有用的功能(见后文)。然后在上面使用&操作,并根据您要查找的单词创建设置。解决方案可以是一行:

>>> set(dc) & set(sum(map(str.split, lines), []))
set(['world', 'hello'])

如果您希望将结果作为列表,只需将其转换为列表:

>>> list(set(dc) & set(sum(map(str.split, lines), [])))
['world', 'hello']