Skip to content

Python dictionary comprehension multiple keys

  • by

Python dictionary comprehension multiple keys are not allowed. The comprehension format is strictly limited to one result per iteration. You can add extra loops though, to loop over the multiple elements you want to insert:

{k: v for k1, k2, v1, v2 in data for k, v in ((k1, v1), (k2, v2))}

or your second example:

{k: v for k1, k2, v, _ in data for k in (k1, k2)}

which is the equivalent of:

result = {}
for k1, k2, v1, v2 in data:
    for k in (k1, k2):
        result[k] = v

Python dictionary comprehension multiple keys

Simple example code. A dictionary comprehension can only ever produce one key-value pair per iteration. The trick then is to produce an extra loop to separate out the pairs using the zip function.

wp_users = [(1, 'Bill'), (2, 'Bob')]
d = {k: v for e in wp_users for k, v in zip(('ID', 'post_author'), e)}

print(d)

Output:

Do comment if you have any doubts or suggestions on this Python dictionary topic.

Note: IDE: PyCharm 2021.3.3 (Community Edition)

Windows 10

Python 3.10.1

All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.