如何实现两个字典值相乘,缺失键对应结果设为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
相关产品推荐
相关产品推荐

