我想总结列表中的每个元素,通过匹配列表中的单词可以实现哪些值。包含每个单词值和列表的元组的元组如下:
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
答案 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)]