Python 合并字典的字典的所有键并创建新字典

Python 合并字典的字典的所有键并创建新字典,python,dictionary,Python,Dictionary,我有一本字典 { "a": "b", "c": { "d": "e", "f": { "g": "h", "i": "j" } } } { “a”:“b”, “c”:{ “d”:“e”, “f”:{ “g”:“h”, “i”:“j” } } } 我希望输出像: { "a": "b", "c.d": "e", "c.f.g": "h", "c.f.i": "j" } {

我有一本字典

{ "a": "b", "c": { "d": "e", "f": { "g": "h", "i": "j" } } } { “a”:“b”, “c”:{ “d”:“e”, “f”:{ “g”:“h”, “i”:“j” } } } 我希望输出像:

{ "a": "b", "c.d": "e", "c.f.g": "h", "c.f.i": "j" } { “a”:“b”, “c.d”:“e”, “c.f.g”:“h”, “c.f.i”:“j” } 我试图解决这个问题

>>> def handle(inp): out = {} for i in inp: if type(inp[i]) is dict: for jj in inp[i].keys(): out[i+'.'+jj] = inp[i][jj] else: out[i] = inp[i] return out >>> handle(inp) {'a': 'b', 'c.f': {'i': 'j', 'g': 'h'}, 'c.d': 'e'} >>>def手柄(inp): out={} 对于inp中的i: 如果类型(inp[i])为dict: 对于inp[i].keys()中的jj: out[i+'.+jj]=inp[i][jj] 其他: out[i]=inp[i] 返回 >>>手柄(inp) {'a':'b','c.f':{'i':'j','g':'h'},'c.d':'e'}
但是我不能完全解决它。

您需要对每一本字典递归地执行此操作

这很有效

>>>
>>> def handle(inp):
...     out = {}
...     for i in inp:
...         if type(inp[i]) is dict:
...             inp[i]=handle(inp[i])
...             for jj in inp[i].keys():
...                 out[i+'.'+jj] = inp[i][jj]
...         else:
...             out[i] = inp[i]
...     return out
...
>>> handle(inp)
{'a': 'b', 'c.f.i': 'j', 'c.d': 'e', 'c.f.g': 'h'}
>>>

您需要为每个字典递归地执行此操作

这很有效

>>>
>>> def handle(inp):
...     out = {}
...     for i in inp:
...         if type(inp[i]) is dict:
...             inp[i]=handle(inp[i])
...             for jj in inp[i].keys():
...                 out[i+'.'+jj] = inp[i][jj]
...         else:
...             out[i] = inp[i]
...     return out
...
>>> handle(inp)
{'a': 'b', 'c.f.i': 'j', 'c.d': 'e', 'c.f.g': 'h'}
>>>

您需要为每个字典递归地执行此操作

这很有效

>>>
>>> def handle(inp):
...     out = {}
...     for i in inp:
...         if type(inp[i]) is dict:
...             inp[i]=handle(inp[i])
...             for jj in inp[i].keys():
...                 out[i+'.'+jj] = inp[i][jj]
...         else:
...             out[i] = inp[i]
...     return out
...
>>> handle(inp)
{'a': 'b', 'c.f.i': 'j', 'c.d': 'e', 'c.f.g': 'h'}
>>>

您需要为每个字典递归地执行此操作

这很有效

>>>
>>> def handle(inp):
...     out = {}
...     for i in inp:
...         if type(inp[i]) is dict:
...             inp[i]=handle(inp[i])
...             for jj in inp[i].keys():
...                 out[i+'.'+jj] = inp[i][jj]
...         else:
...             out[i] = inp[i]
...     return out
...
>>> handle(inp)
{'a': 'b', 'c.f.i': 'j', 'c.d': 'e', 'c.f.g': 'h'}
>>>

您必须对每个内部字典递归地执行此操作。
{“a”:{“b”:2},“a.b”:1}
的预期输出是什么?根据您尝试实现的内容,可能还有其他方法可以执行相同的操作。正如@Kevin所提到的,这可能会导致歧义。您必须对每个内部字典递归执行此操作。
{“a”:{“b”:2},“a.b”:1}
?根据您尝试实现的内容,可能还有其他方法可以执行相同操作。正如@Kevin所提到的,这可能会导致歧义。您必须对每个内部字典递归执行此操作。
{“a”:{“b”:2},“a.b”:1}
?根据您尝试实现的内容,可能还有其他方法可以执行相同操作。正如@Kevin所提到的,这可能会导致歧义。您必须对每个内部字典递归执行此操作。
{“a”:{“b”:2},“a.b”:1}
?根据您尝试实现的内容,可能还有其他方法可以执行相同操作。正如@Kevin所提到的,这可能会造成歧义。