For completeness, from 3.5 onwards, you can also do the following: [{'name': n, **d} for n, d in dod.items()]
On Tue, Mar 30, 2021 at 1:06 PM Chris Angelico <ros...@gmail.com> wrote: > On Tue, Mar 30, 2021 at 11:01 PM Jon Ribbens via Python-list > <python-list@python.org> wrote: > > > > On 2021-03-30, Chris Angelico <ros...@gmail.com> wrote: > > > I dunno about "canonical", but here's how I'd do it: > > > > > > lod = [info | {"name": name} for name, info in dod.items()] > > > > > > You could use {"name":name}|info instead if you prefer to have the > > > name show up first in the dictionary. > > > > It's probably worth noting this method requires Python 3.9. > > True, and if you need 3.8 support, then the dict constructor with one > kwarg is the way to do it. But this way has the flexibility that you > can choose which way to resolve conflicts (if there's a name inside > the info dict, should it override the key, or not?). > > ChrisA > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list