我有两个字典,相同的键是exaclty.
第一本字典是:
{ "key_1" : "AR" ,
"key_2":"BR" ,
"key_3" : "CR" }
第二个是:
{ "key_1" : "signinfication of AR" ,
"key_2":" signinfication of BR" ,
"key_3" : " signinfication of CR" }
我想获得以下字典:
{"key_1" : {"AR" : "signinfication of AR"} ,
"key_2" : {"BR" : "signinfication of BR"} ,
"key_3" : {"CR" : "signinfication of CR"}
谢谢您的帮助 !
解决方法:
这就像单线词典理解一样简单.
>>> {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())}
如果你正在使用列表的dicts,那么上面的代码需要在相应的列表之间进行压缩 –
>>> 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"
}
}
标签:python,dictionary,merge
来源: https://codeday.me/bug/20190715/1464890.html