为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2022-06-02 11:32:55
我有 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))
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您可以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 defaultdict


new_dict = defaultdict(int)


for a, b in zip(a_list, b_list):

  new_dict[a] += b


print(new_dict)

输出:


defaultdict(<class 'int'>,

 {('orange', 'banana'): 14,

  ('grape', 'apple'): 16,

  ('cucumber', 'tomatoes'): 12}

)


查看完整回答
反对 回复 2022-06-02
?
Qyouu

TA贡献1786条经验 获得超11个赞

你可以通过基础实现这一点:


for a,b in zip(a_list,b_list):

    try:

        d[a]+=b

    except:

        d.update({a:b})

输出:


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

尝试将失败,直到所有键都已更新,然后它将开始将下一个值与键相加


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信