2017-06-12 105 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'}}