我是Python的新手,需要帮助。我以这种格式列出了一些单词及其提及频率:
ResponseTweetsAug27 = [('rescue',239),('escape',164),...]
ImpactTweetsAug27 = [('close',1350),('falling',1267),...]
,依此类推。这些列表位于文件中,每个列表都位于其自己的行上。
许多单词频率对是无关紧要的。我需要梳理列表,并提取与以下格式的主单词列表关联的单词频率对:
key_terms = [“准备”,“准备”,“准备好”,“飓风准备”,“飓风准备” ...]
目标是显示主列表中单词被提及的次数。我认为这将涉及遍历元组列表,但是对此我是陌生的,需要指导。预先感谢!
编辑:我可以分别遍历每个元组列表,但是鉴于它们具有不同的标题,您将如何遍历它们呢?
答案 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.defaultdict
与itertools.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})