Dictionary comprehension is an elegant and concise way to create dictionaries from another dictionary. Or you can say transforming or creating one dictionary into another dictionary based on conditions.
A dictionary comprehension takes the form.
{key: value for (key, value) in iterable}
{key_expression: value_expression for item in iterable}
Here, key_expression
and value_expression
are expressions that define the key and value of each key-value pair, and iterable
is the sequence of elements over which you want to iterate.
Python dictionary comprehension
A simple example code creates the dictionary with number-square key/value pair in the program using dictionary comprehension.
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)
Output:
Make dict using two lists named keys and value.
keys = ['a','b','c','d','e']
values = [1,2,3,4,5]
# but this line shows dict comprehension here
myDict = { k:v for (k,v) in zip(keys, values)}
# We can use below too
# myDict = dict(zip(keys, values))
print (myDict)
Output: {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5}
You can also make a dictionary from a list using comprehension.
myDict = {x: x**2 for x in [1,2,3,4,5]}
print (myDict)
If Conditional Dictionary Comprehension
This example below maps the numbers to their cubes that are not divisible by 4:
newdict = {x: x**3 for x in range(10) if x**3 % 4 == 0}
print(newdict)
Output: {0: 0, 8: 512, 2: 8, 4: 64, 6: 216}
if-else Conditional Dictionary Comprehension
original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
res = {k: ('old' if v > 40 else 'young')
for (k, v) in original_dict.items()}
print(res)
Do comment if you have any doubts or suggestions on this Python comprehension 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.