如何在Python中生成两个字典的所有组合以创建新字典
生成两个字典键组合的乘积字典
首先纠正你代码里的笔误,第二个字典应该命名为d2而非重复的d1:
d1 = {'a':1.2,'b':1.5,'c':1.3} d2 = {'a':2,'b':1,'c':2}
以下是几种实现目标的方法:
基础嵌套循环写法:
直观遍历两个字典的键值对,生成新字典的键值组合:result = {} for key1, val1 in d1.items(): for key2, val2 in d2.items(): result[(key1, key2)] = val1 * val2字典推导式(简洁版):
用一行代码完成逻辑,可读性和效率都不错:result = {(k1, k2): v1 * v2 for k1, v1 in d1.items() for k2, v2 in d2.items()}结合itertools.product的写法:
借助itertools.product生成两个字典键的笛卡尔积,再映射到对应值的乘积:from itertools import product result = {(k1, k2): d1[k1] * d2[k2] for k1, k2 in product(d1.keys(), d2.keys())}
以上三种方法最终都会生成你需要的字典,比如('a','a')对应值为1.2 * 2 = 2.4,('a','b')对应值为1.2 * 1 = 1.2,以此类推。
内容的提问来源于stack exchange,提问作者zoldxk
相关产品推荐
相关产品推荐

