猿问

将元组列表和常规列表组合到字典中,然后按元组的唯一值求和

我有 2 个列表:元组列表和整数列表。它们的长度相同。我想将它们组合成一个字典并对同一个元组的值整数求和。


a_list = [('orange','banana'),('grape','apple'),('cucumber','tomatoes'),('orange','banana'),('grape','apple'),('grape','apple')]

b_list = [6,10,12,8,1,5]

预期输出:


new_dict = {('orange','banana'):14,('grape','apple'):16,('cucumber',tomatoes'):12}

当我尝试使用它们组合时它不起作用dict(zip(a_list, b_list))


互换的青春
浏览 114回答 2
2回答

呼如林

您可以collections.defaultdict为此使用:a_list = [('orange', 'banana'), ('grape', 'apple'), ('cucumber', 'tomatoes'), ('orange', 'banana'), ('grape', 'apple'), ('grape', 'apple')]b_list = [6, 10, 12, 8, 1, 5]from collections import defaultdictnew_dict = defaultdict(int)for a, b in zip(a_list, b_list):&nbsp; new_dict[a] += bprint(new_dict)输出:defaultdict(<class 'int'>,&nbsp;{('orange', 'banana'): 14,&nbsp; ('grape', 'apple'): 16,&nbsp; ('cucumber', 'tomatoes'): 12})

Qyouu

你可以通过基础实现这一点:for a,b in zip(a_list,b_list):&nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; d[a]+=b&nbsp; &nbsp; except:&nbsp; &nbsp; &nbsp; &nbsp; d.update({a:b})输出:{('orange', 'banana'): 14, ('grape', 'apple'): 16, ('cucumber', 'tomatoes'): 12}尝试将失败,直到所有键都已更新,然后它将开始将下一个值与键相加
随时随地看视频慕课网APP

相关分类

Python
我要回答