如何从列表中出现的单词列表中返回单词计数?

2024-04-28 22:56:11 发布

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

我有一个非常大的字符串列表如下:

list_strings = ['storm', 'squall', 'overcloud',...,'cloud_up', 'cloud_over', 'plague', 'blight', 'fog_up', 'haze']

还有一个非常大的列表如下:

lis_of_lis = [['the storm was good blight'],['this is overcloud'],...,[there was a plague stormicide]]

如何返回出现在list_stringslis_of_lis的每个子列表上的所有单词的计数列表。例如,对于上面的示例,这将是所需的输出:[2,1,1]

例如:

['storm', 'squall', 'overcloud',...,'cloud_up', 'cloud_over', 'plague', 'blight', 'fog_up', 'haze']

['the storm was good blight']

计数是2,因为stormblight出现在第一个子列表中(lis的lis)

['storm', 'squall', 'overcloud',...,'cloud_up', 'cloud_over', 'plague', 'blight', 'fog_up', 'haze']

['this is overcloud stormicide']

计数是1,因为overcloud出现在第一个子列表(lis的lis)

因为杀风暴剂没有出现在第一个列表中

['storm', 'squall', 'overcloud',...,'cloud_up', 'cloud_over', 'plague', 'blight', 'fog_up', 'haze']

[there was a plague]

计数是1,因为plague出现在第一个子列表(lis的lis)

因此是期望的输出[2,1,1]

所有答案的问题是计算一个单词中的所有子字符串而不是整个单词


Tags: cloud列表单词over计数upovercloudstorm
3条回答
result = []
for sentence in lis_of_lis:
    result.append(0)
    for word in list_strings:
        if word in sentence[0]:
            result[-1]+=1
print(result)

哪个是长版的

result = [sum(1 for word in list_strings if word in sentence[0])  for sentence in lis_of_lis]

这将返回[2,2,1]作为示例。你知道吗

如果只需要整词,请在单词/句子前后加空格:

result = []
for sentence in lis_of_lis:
    result.append(0)
    for word in list_strings:
        if ' '+word+' ' in ' '+sentence[0]+' ':
            result[-1]+=1
print(result)

或短版本:

result = [sum(1 for word in list_strings if ' '+word+' ' in ' '+sentence[0]+' ')  for sentence in lis_of_lis]

这将返回[2,1,1]作为示例。你知道吗

可以在列表中使用sum函数:

[sum(1 for i in list_strings if i in sub[0]) for sub in lis_of_lis]

这将创建一个字典,其中list\u字符串中的单词作为键,值从0开始。然后它遍历列表,将短语分解成一个单词列表,遍历该列表,并检查它们是否在字典中。如果是,则在相应的值上加1。你知道吗

    word_count = dict()
    for word in list_string:
        word_count[word] = 0

    for phrase in lis_of_lis:
        words_in_phrase = phrase.split()
        for word in words_in_phrase:
            if word in word_count:
                word_count[word] += 1

这将创建一个字典,其中单词作为键,频率作为值。我将让您从数据结构中获得正确的输出。你知道吗

相关问题 更多 >