匹配Python Dict

时间:2015-03-28 00:06:27

标签: python python-2.7

我的字典看起来像......

dict1 = {'England':[1,2,3,4,5,6,7],'Canada':[1,2,3,4,5,6,7]...etc}

我还有另一本看起来像......的词典

dict2 = {'England':15,'Canada':10...etc}

我正在尝试为密钥进行匹配,然后将值附加到dict1,这样我就可以得到类似

的内容
dict3 = {'England':[1,2,3,4,5,6,7,15],'Canada':[1,2,3,4,5,6,7,10]...etc}

到目前为止,我相信我将不得不使用setdefault append方法。但我不太确定。

4 个答案:

答案 0 :(得分:4)

dict1 = {'England': range(1, 8), 'Canada': range(1, 8)}
dict2 = {'England': 15, 'Canada': 10, 'France': 5}
for k, v in dict2.items():
    dict1.setdefault(k, []).append(v)

结果:

{
    'Canada': [1, 2, 3, 4, 5, 6, 7, 10], 
    'England': [1, 2, 3, 4, 5, 6, 7, 15],
    'France': [5]
}

答案 1 :(得分:1)

使用dict理解:

dict3 = {k:v+[dict2[k]] for k,v in dict1.items() if k in dict2}

结果:

{'England': [1, 2, 3, 4, 5, 6, 7, 15], 'Canada': [1, 2, 3, 4, 5, 6, 7, 10]}

我假设两个dicts都有匹配的键,因为你没有指定dict2中是否有某些键可能不存在。

答案 2 :(得分:0)

我认为您只需要查看dict1中的密钥是否在dict2的密钥集中,然后附加它....

可能会有更多的pythonic,但这很简单......

for key in dict1.keys():
  if key in dict2.keys():
    dict1[key].append(dict2[key])

答案 3 :(得分:0)

你可以这样做:

print {k: v+[dict2[k]] for k,v in dict1.items()}