2017-06-12 104 views
0

我有兩個Python類型的字典的字典:創建一個基於兩個Python類型的字典

payload = {"key1":{"a":"1"},"key2":{"b":"2","c":"3"}} 

data = {"1":"John","2":"Jacob"} 

,我想我的輸出是:

{"key1":{"a":"John"},"key2":{"b":"Jacob","c":""}} 

任何方法我嘗試正確地打印值,但不更新輸出字典。

回答

2

您可以使用dict comprehension這樣做:

payload = {"key1":{"a":"1"},"key2":{"b":"2","c":"3"}} 
data = {"1":"John","2":"Jacob"} 

final = {k: {i:data[j] if j in data.keys() else "" for i, j in payload[k].items()} for k in payload} 
print(final) 

輸出:

{'key2': {'b': 'Jacob', 'c': ''}, 'key1': {'a': 'John'}} 
+0

嗨,謝謝你。它的功能就像一個魅力......但是當數據字典也很複雜時,理解會怎麼樣呢?例如,如果data = {「key3」:{「1」:「John」},「key4」:{「2」:「Jacob」}} – galeej

+0

如果數據是'{「key3 「:{」1「:」John「},」key4「:{」2「:」Jacob「}}'您可以映射數據值,或者您可以按鍵分組每個字典的值,而不是處理其數據。 –

2

有這個沒有單一的方法,我知道的,但你可以使用:

for k, v in payload.viewitems(): 
    payload[k] = {} 
    for kv, vv in v.viewitems(): 
     payload[k][kv] = data.get(vv, "") 

,如果你再檢查​​它的內容,你是後:

{'key2': {'c': '', 'b': 'Jacob'}, 'key1': {'a': 'John'}}