Flatten nested dictionaries, compressing keys

前端 未结 28 2705
遇见更好的自我
遇见更好的自我 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:26

    here's a solution using a stack. No recursion.

    def flatten_nested_dict(nested):
        stack = list(nested.items())
        ans = {}
        while stack:
            key, val = stack.pop()
            if isinstance(val, dict):
                for sub_key, sub_val in val.items():
                    stack.append((f"{key}_{sub_key}", sub_val))
            else:
                ans[key] = val
        return ans
    

提交回复
热议问题