I want to explode the keys in a Python dict such that if I have as input:
d = {"first": {"second_a": 3, "second_b": 4}, "another": 2, "anotherone": {"third_a": {"last": 3}} }
I will get as output a list of the exploded keys:
["first.second_a", "first.second_b", "another", "anotherone.third_a.last" ]
Do you know any utility function that does this?
Thank you!
Advertisement
Answer
If your dictionary contains only nested dictionaries you can do for example:
d = { "first": {"second_a": 3, "second_b": 4}, "another": 2, "anotherone": {"third_a": {"last": 3}}, } def flatten(d, prefix=""): for k, v in d.items(): if isinstance(v, dict): yield from flatten(v, prefix + "." + k) else: yield (prefix + "." + k).strip(".") print(list(flatten(d)))
Prints:
['first.second_a', 'first.second_b', 'another', 'anotherone.third_a.last']