总结会员元素'与Python中的元组中的单词匹配的列表中的值

时间:2017-02-28 14:43:46

标签: python list tuples

我想总结列表中的每个元素,通过匹配列表中的单词可以实现哪些值。包含每个单词值和列表的元组的元组如下:

val_tuple = [('and',3),('cat',2),('dog',3),('only',5),('horse',3),('car',3),...]

word_list = ['cat and dog',
             'only horse',
             'dog and horse',
             'only dog',...]

输出应该是这样的:

result = [('cat and dog', 8),
          ('only horse', 8),
          ('dog and horse', 9),
          ('only dog', 8),...]

我无法找到方法并且只是为了总结列表中的值而进行多次尝试:

for w in word_list:
   for val in val_tuple:
       if val[0] in w:
           sum = val[0]
       sum += sum 

1 个答案:

答案 0 :(得分:7)

首先,你最好为你的单词值构建一个字典:

word_values = dict(val_tuple)

您只需使用列表理解

result = [(sentence,sum(word_values.get(word,0) for word in sentence.split()))
              for sentence in word_list]

粗体部分将得分加起来。所以我们为每个sentence做的是我们使用.split()来获取单词。现在,对于每个单词,我们获得word_values.get(word,0):这意味着我们执行查找,如果元素,我们假设单词值为0.我们sum(..)全部这些值并为每个句子返回一个元组(sentence,sum(..))

根据提供的样本数据,我获得:

>>> result
[('cat and dog', 8), ('only horse', 8), ('dog and horse', 9), ('only dog', 8)]