這就像一條線一樣簡單字典理解。
>>> {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())}
如果你處理列表的類型的字典工作,那麼上面的代碼需要相應的列表之間的zip
平 -
>>> 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"
}
}
你能保證密鑰從兩個類型的字典以相同的順序返回? –
@cᴏʟᴅsᴘᴇᴇᴅ嗯我沒有想到,對不起。我想OP可以在你的回答中使用你的建議,以確保這種情況發生。無論如何,我會添加這個,謝謝。 – RoadRunner
保證這不是什麼大事,只要調用'sorted'並且它應該工作。 Upvoted,歡呼聲。 –