结合两个不同dicts的键和值

时间:2015-03-17 10:16:54

标签: python python-2.7 dictionary

我是python的新手,我正在尝试合并两个dicts

d1 = {
    'A': '1',
    'B': '2',
    'C': '3',
    'D': '4',
    'E': '5'
}

d2 = {
    'X': '!',
    'Y': '@'
}

我正在尝试合并两个dicts的键,以便结果如下所示:

d3 =  {
    'A_X': '1!',
    'B_X': '2!',
    'C_X': '3!',
    'D_X': '4!',
    'E_X': '5!',
    'A_Y': '1@',
    'B_Y': '2@',
    'C_Y': '3@',
    'D_Y': '4@',
    'E_Y': '5@',
}

2 个答案:

答案 0 :(得分:2)

你应该迭代字典并将它们组合起来

d3 = {}
for k1,v1 in d1.iteritems():
    for k2,v2 in d2.iteritems():
        d3[k1+'_'+k2] = v1+v2 

另一种更神秘但更加诡异的方式:

d3 = {k1+'_'+k2:v1+v2 for k1,v1 in d1.iteritems() for k2,v2 in d2.iteritems() }

答案 1 :(得分:0)

dictionary comprehension使用itertools.product

from itertools import product

d1 = { 'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5' }
d2 = { 'X': '!', 'Y': '@'}

d3 = {'_'.join([k1, k2]):''.join([d1[k1], d2[k2]]) for k1, k2 in product(d1.keys(), d2.keys())}

print(d3)
# {'E_X': '5!', 'C_X': '3!', 'D_Y': '4@', 'B_Y': '2@', 'A_X': '1!', 'D_X': '4!', 'A_Y': '1@', 'C_Y': '3@', 'B_X': '2!', 'E_Y': '5@'}