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

时间:2014-03-24 12:54:00

标签: python dictionary

我有一本字典

{
   "a": "b",
   "c": {
       "d": "e",
       "f": {
           "g": "h",
           "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'}

但我无法完全解决它。

1 个答案:

答案 0 :(得分:3)

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

这很有效。

>>>
>>> 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'}
>>>