You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现两个字典值相乘,缺失键对应结果设为0?

实现两个字典键值相乘,缺失键对应值设为0

嘿,这个问题很好解决,我来给你一步步说明~

你现在的两个字典:

dict1 = {'fred': 2, 'andrew': 2, 'judy': 1, 'george': 1}
dict2 = {'andrew': 4, 'fred': 2, 'judy': 2, 'george': 1, 'john': 1}

原来的代码只遍历了dict1的键,所以dict2里独有的john没被纳入结果。要实现包含dict2所有键、且dict1中不存在的键对应值为0的需求,只需要调整遍历的对象,再用字典的get()方法处理缺失键的默认值就行:

count = {k: dict1.get(k, 0) * dict2[k] for k in dict2}

代码解释:

  • 遍历dict2的所有键,这样dict2里的每一个键都会出现在最终的count字典中
  • dict1.get(k, 0):如果键k存在于dict1中,就返回对应的值;如果不存在,就返回默认值0
  • 用这个值乘以dict2[k],自然就得到了缺失键对应0的结果

运行这段代码后,你就能得到想要的结果:

{'fred': 4, 'andrew': 8, 'judy': 2, 'george': 1, 'john': 0}

如果之后你想同时包含两个字典的所有键(比如万一dict1有dict2没有的键,也想设为0),可以把遍历对象改成两个字典的键的并集:

all_keys = dict1.keys() | dict2.keys()
count = {k: dict1.get(k, 0) * dict2.get(k, 0) for k in all_keys}

不过根据你当前的需求,第一种方法就完全够用啦~

内容的提问来源于stack exchange,提问作者Louis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:16:09