> > For completeness, from 3.5 onwards, you can also do the following: > > [{'name': n, **d} for n, d in dod.items()] > Reading through these, personally I like this one best. I'm curious what > about it was enabled in 3.5? Was **kwarg expansion inside a dict literal not > possible before then? Anyway, I like that it uses simple elemental parts that > have been around a long long time in Python.
You can check the release notes of previous Python versions: https://docs.python.org/3/whatsnew/3.5.html specifically: PEP 448 - Additional Unpacking Generalizations https://docs.python.org/3/whatsnew/3.5.html#whatsnew-pep-448 or, if you have multiple local installations of Python (or Docker or similar technologies), test running the same code snippet with different Python versions. Example with Python 3.9: ``` $ docker run --rm --tty --interactive python:3.9 \ python -c 'import sys; d1 = > dict(x=1); d2 = {"y": 2, **d1}; print(sys.version_info, d2)' sys.version_info(major=3, minor=9, micro=2, releaselevel='final', serial=0) {'y': 2, 'x': 1} ``` Example with Python 3.4: ``` $ docker run --rm --tty --interactive python:3.4 \ python -c 'import sys; d1 = > dict(x=1); d2 = {"y": 2, **d1}; print(sys.version_info, d2)' ... SyntaxError: invalid syntax ``` -- https://mail.python.org/mailman/listinfo/python-list