从元组中提取相关关键词

2024-06-17 13:44:07 发布

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

我是Python新手,需要帮助。我有几个单词的列表和它们在这种格式中的提及频率:

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

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

等等。这些列表位于一个文件中,每个列表都有自己的行。你知道吗

许多词频对是不相关的。我需要梳理列表并提取与此格式的单词主列表相关联的单词频率对:

key_terms = ['beprep', 'gear up', 'get ready', 'hurricaneprep', 'hurricanepreparation'...]

目标是显示主列表中的单词被提及的次数。我认为这将涉及到迭代元组列表,但我是新的,这需要一个指导。提前谢谢!你知道吗

编辑:我可以分别浏览每个元组列表,但是如果它们有不同的标题,您将如何迭代所有元组?你知道吗


Tags: 文件key列表close格式单词频率词频
2条回答

可以使用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})

假设您已经从文件中读取了列表,并将它们放在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

相关问题 更多 >