Canonical conversion of dict of dicts to list of dicts

Jon Ribbens jon+usenet at unequivocal.eu
Tue Mar 30 07:53:37 EDT 2021


On 2021-03-30, Loris Bennett <loris.bennett at 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".


More information about the Python-list mailing list