从元组列表中提取相关的关键字

时间:2018-06-27 16:07:34

标签: python list dictionary tuples counting

我是Python的新手,需要帮助。我以这种格式列出了一些单词及其提及频率:

  

ResponseTweetsAug27 = [('rescue',239),('escape',164),...]

     

ImpactTweetsAug27 = [('close',1350),('falling',1267),...]

,依此类推。这些列表位于文件中,每个列表都位于其自己的行上。

许多单词频率对是无关紧要的。我需要梳理列表,并提取与以下格式的主单词列表关联的单词频率对:

  

key_terms = [“准备”,“准备”,“准备好”,“飓风准备”,“飓风准备” ...]

目标是显示主列表中单词被提及的次数。我认为这将涉及遍历元组列表,但是对此我是陌生的,需要指导。预先感谢!

编辑:我可以分别遍历每个元组列表,但是鉴于它们具有不同的标题,您将如何遍历它们呢?

2 个答案:

答案 0 :(得分:0)

假设您已经从文件中读取列表,并将其放在lists变量中:

ResponseTweetsAug27 = [('beprep', 239), ('gear up', 164)]

ImpactTweetsAug27 = [('get ready', 1350), ('falling', 1267)]

lists = [ResponseTweetsAug27, ImpactTweetsAug27]

key_terms = ['beprep', 'gear up', 'get ready']

for l in lists:
    for pair in l:
        if pair[0] in key_terms:
            print(pair[0], pair[1])

您可以遍历lists。每个项目都是一个列表。然后,在每个列表(此处称为l)中,您都要遍历每一对,以检查key_terms中是否存在名称/标题(无论您叫什么名称)。如果是这样,则将其打印出来,并提及它们的次数。结果:

> python tuples.py
beprep 239
gear up 164
get ready 1350

答案 1 :(得分:0)

您可以将collections.defaultdictitertools.chain一起使用以返回计数字典。对于key_terms,建议使用set进行O(1)复杂度查询。

来自@Frynio的数据。

ListA = [('beprep', 239), ('gear up', 164)]
ListB = [('get ready', 1350), ('falling', 1267)]

from collections import defaultdict
from itertools import chain

key_terms = {'beprep', 'gear up', 'get ready'}

d = defaultdict(int)

for key, value in chain(ListA, ListB):
    if key in key_terms:
        d[key] += value

print(d)

defaultdict(int, {'beprep': 239, 'gear up': 164, 'get ready': 1350})