如何使用另一个只包含项目的列表对项目进行子集化:值列表?

时间:2017-10-17 15:47:09

标签: python list list-comprehension word-cloud

我有2个清单。一个是单词及其频率列表,另一个是单词列表。

a = [('country',3478), ('island',2900),('river',5)] 
b = ['river','mountain','bank'] 

a中有数千个条目,但b中只有数百个。

如何将a列表a以便我返回:

c=[('river',5)]

对于循环,由于条目的数量太长,我认为列表理解是解决方案,但无法正确处理。

我的主要目标是用我的最终列表创建一个wordcloud。任何帮助将不胜感激

**编辑,因为我犯了一些错误,正如一些评论者指出的那样。我想回来

c=[('river',5)]

而不是

c=['river',5]
正如我最初写的那样。道歉并感谢指出

2 个答案:

答案 0 :(得分:3)

我认为你真的想要:

c = [('river',5)]  # a list with one tuple

最好先在b中构建一组值:

bd = set(b)

然后你可以使用列表理解:

c = [(x,y) for x,y in a if x in bd]

话虽如此,如果你想查找一个单词的频率,我建议你不要构建一个元组列表,而是一个字典。您可以使用字典理解执行此操作:

c = {x: y for x,y in a if x in bd}  # dictionary variant

答案 1 :(得分:2)

你可以试试这个:

a = [('country',3478), ('island',2900),('river',5)] 
b = ['river','mountain','bank'] 
final_data = list([i for i in a if i[0] in b][0])

输出:

['river', 5]