这就像一行dict理解一样简单。
>>> {k : {d1[k] : d2[k]} for k in d1.keys() & d2.keys()}
{
"key_2": {
"BR": " signinfication of BR"
},
"key_1": {
"AR": "signinfication of AR"
},
"key_3": {
"CR": " signinfication of CR"
}
}
这里,d1 和 d2 是您的两个字典。 d1.keys() & d2.keys() 将对字典键执行交集,以确保对两个字典中都存在的键进行迭代。这里,就是
d1.keys() & d2.keys()
{'key_1', 'key_2', 'key_3'}
当您不能保证两个字典具有完全相同的键时,一般来说这是很好的。
在 python2.7 和更早版本上,您需要稍作修改,因为keys() 返回一个列表。使用set.intersection -
>>> {k : {d1[k] : d2[k]} for k in set(d1.keys()).intersection(d2.keys())}
如果您正在使用列表的字典,那么上面的代码需要在相应列表之间使用zipping -
>>> d1
{
"key_1": [
"AR",
"BR",
"CR"
],
...
}
>>> d2
{
"key_1": [
"signfication of AR",
"signfication of BR",
"signfication of CR"
],
...
}
>>> {k : dict(zip(d1[k], d2[k])) for k in d1.keys() & d2.keys()}
{
"key_1": {
"BR": "signfication of BR",
"CR": "signfication of CR",
"AR": "signfication of AR"
},
"key_3": {
"CE": " signfication of CE",
"AE": "signfication of AE",
"BE": " signfication of BE"
},
"key_2": {
"BZ": "signfication of BZ",
"CZ": "signfication of CZ",
"AZ": "signfication of AZ"
}
}