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 >> >> lod = [ >> { >> "name": "alice", >> "lang": "python", >> "level": "expert" >> }, >> { >> "name": "bob", >> "lang": "perl", >> "level": "noob" >> } >> ] >> >> than just >> >> lod = [] >> for name in dod: >> d = dod[name] >> d["name"] = name >> lod.append(d) >> >> ? > > There can't be a "canonical" way to perform the arbitrary data > conversion you want, because it's arbitrary. Personally I would > do this: > > [dict(data, name=name) for name, data in dod.items()] > > but it's of course arguable whether this is "more Pythonic" or > indeed "better".
As I am stuck with Python 3.6 I'll go with this. I'm not quite sure what you mean by "arbitrary". I meant "canonical" in the sense of "standard" or "established", which it seems to me could apply to a fairly generic conversion such as DoD -> LoD as described above. Thanks to you and the other for the help. Cheers, Loris -- This signature is currently under construction. -- https://mail.python.org/mailman/listinfo/python-list