Python 嵌套字典的交换键

Python 嵌套字典的交换键,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一本字典如下: output_dict = {'d0': {'a': 1, 'b': 1}, 'd1': {'a': 2, 'c': 1}, 'd2': {'a': 3}} 每个键都有一个与其关联的字典 dict_sample = {'a': {'d0': '1', 'd1': '2', 'd2': '3'}, 'b': {'d0': '1'}, 'c': {'d1': '1'}} 我需要如下输出: output_dict = {'d0': {'a': 1, 'b': 1}, 'd1':

我有一本字典如下:

output_dict = {'d0': {'a': 1, 'b': 1}, 'd1': {'a': 2, 'c': 1}, 'd2': {'a': 3}}
每个键都有一个与其关联的字典

dict_sample = {'a': {'d0': '1', 'd1': '2', 'd2': '3'}, 'b': {'d0': '1'}, 'c': {'d1': '1'}}
我需要如下输出:

output_dict = {'d0': {'a': 1, 'b': 1}, 'd1': {'a': 2, 'c': 1}, 'd2': {'a': 3}}

我非常感谢任何帮助,在蟒蛇的方式来实现这一点。谢谢大家!

我相信这会产生所需的输出

>>> from collections import defaultdict
>>> d = defaultdict(dict)
>>>
>>> dict_sample = {'a': {'d0': '1', 'd1': '2', 'd2': '3'}, 'b': {'d0': '1'}, 'c': {'d1': '1'}}
>>>
>>> for key, value in dict_sample.items():
...     for k, v in value.items():
...         d[k][key] = v
...
>>> d
defaultdict(<class 'dict'>, {'d0': {'a': '1', 'b': '1'}, 'd1': {'a': '2', 'c': '1'}, 'd2': {'a': '3'}})
>>从集合导入defaultdict
>>>d=默认dict(dict)
>>>
>>>dict_sample={'a':{'d0':'1','d1':'2','d2':'3'},'b':{'d0':'1'},'c':{'d1':'1'}
>>>
>>>对于键,dict_sample.items()中的值:
...     对于k,v,在value.items()中:
...         d[k][key]=v
...
>>>d
defaultdict(,{'d0':{'a':'1','b':'1'},'d1':{'a':'2','c':'1'},'d2':{'a':'3'})

您可以在带有嵌套循环的新dict上使用
dict.setdefault

d = {}
# for each key and sub-dict in the main dict
for k1, s in dict_sample.items():
    # for each key and value in the sub-dict
    for k2, v in s.items():
        # this is equivalent to d[k2][k1] = int(v), except that when k2 is not yet in d,
        # setdefault will initialize d[k2] with {} (a new dict)
        d.setdefault(k2, {})[k1] = int(v)
d
将变成:

{'d0': {'a': 1, 'b': 1}, 'd1': {'a': 2, 'c': 1}, 'd2': {'a': 3}}

非常感谢。什么是默认dict?相对于简单地初始化d={},它有什么帮助。我不明白。请解释。@Chandansing谢谢你!你能简要解释一下代码吗。我是python新手,不客气。我已经用内联注释更新了代码,这些注释应该有助于解释它。