On 31/03/2021 01.22, Loris Bennett wrote: > Jon Ribbens <jon+use...@unequivocal.eu> writes: >> On 2021-03-30, Loris Bennett <loris.benn...@fu-berlin.de> wrote: >>> If I have dict of dicts, say >>> >>> dod = { >>> "alice": >>> { >>> "lang": "python", >>> "level": "expert" >>> }, >>> "bob": >>> { >>> "lang": "perl", >>> "level": "noob" >>> } >>> } >>> >>> is there a canonical, or more pythonic, way of converting the outer key >>> to a value to get a list of dicts, e.g ...
>>> >>> than just >>> >>> lod = [] >>> for name in dod: >>> d = dod[name] >>> d["name"] = name >>> lod.append(d) Please be aware of the 'law of unintended consequences' - what functional programmers call "side-effects"! At the end of the above code, not only has "lod" been created (per spec) but "dod" is no longer what it once was. Thus, future code may not rely upon the (above) structure. Of course, if by "convert" you mean transform, ie that "dod" will be del()[eted] afterwards, such may be completely unimportant. from pprint import pprint as pp import copy dod = { "alice": { "lang": "python", "level": "expert" }, "bob": { "lang": "perl", "level": "noob" } } original = copy.deepcopy( dod ) lod = [] for name in dod: d = dod[name] d["name"] = name lod.append(d) print( original == dod ) pp(dod) pp(original) False {'alice': {'lang': 'python', 'level': 'expert', 'name': 'alice'}, 'bob': {'lang': 'perl', 'level': 'noob', 'name': 'bob'}} {'alice': {'lang': 'python', 'level': 'expert'}, 'bob': {'lang': 'perl', 'level': 'noob'}} -- Regards, =dn -- https://mail.python.org/mailman/listinfo/python-list