Flatten nested dictionaries, compressing keys

前端 未结 28 2809
遇见更好的自我
遇见更好的自我 2020-11-22 01:16

Suppose you have a dictionary like:

{\'a\': 1,
 \'c\': {\'a\': 2,
       \'b\': {\'x\': 5,
             \'y\' : 10}},
 \'d\': [1, 2, 3]}

Ho

28条回答
  •  庸人自扰
    2020-11-22 01:40

    Using dict.popitem() in straightforward nested-list-like recursion:

    def flatten(d):
        if d == {}:
            return d
        else:
            k,v = d.popitem()
            if (dict != type(v)):
                return {k:v, **flatten(d)}
            else:
                flat_kv = flatten(v)
                for k1 in list(flat_kv.keys()):
                    flat_kv[k + '_' + k1] = flat_kv[k1]
                    del flat_kv[k1]
                return {**flat_kv, **flatten(d)}
    

提交回复
热议问题