Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for The Flat Dictionary by lisovsky
def flatten(dictionary):
def flat(d):
t = {}
flag = False
for key, value in d.items():
if type(value) is dict:
if value:
for k, v in value.items():
t[key + "/" + k] = v
else:
t[key] = ""
flag = True
else:
t[key] = value
return t, flag
d, flag = flat(dictionary)
while flag:
d, flag = flat(d)
return d
if __name__ == "__main__":
test_input = {"key": {"deeper": {"more": {"enough": "value"}}}}
print(" Input: {}".format(test_input))
print("Output: {}".format(flatten(test_input)))
# These "asserts" using only for self-checking and not necessary for auto-testing
assert flatten({"key": "value"}) == {"key": "value"}, "Simple"
assert flatten({"key": {"deeper": {"more": {"enough": "value"}}}}) == {
"key/deeper/more/enough": "value"
}, "Nested"
assert flatten({"empty": {}}) == {"empty": ""}, "Empty value"
assert flatten(
{
"name": {"first": "One", "last": "Drone"},
"job": "scout",
"recent": {},
"additional": {"place": {"zone": "1", "cell": "2"}},
}
) == {
"name/first": "One",
"name/last": "Drone",
"job": "scout",
"recent": "",
"additional/place/zone": "1",
"additional/place/cell": "2",
}
print('You all set. Click "Check" now!')
Oct. 18, 2022