Dictionary comprehensions in Python provide a concise way to create dictionaries. They allow you to generate dictionary key-value pairs using an expression inside a single line of code, similar to list comprehensions.
Basic Syntax
The basic syntax for a dictionary comprehension is:
{key_expression: value_expression for item in iterable}
This translates to: "Generate a dictionary where each key-value pair is defined by the key_expression and value_expression evaluated for each item in the iterable."
Examples
Simple Dictionary Comprehension:
Create a dictionary where the keys are numbers from 0 to 4 and the values are their squares.
2. Dictionary Comprehension with Condition:
Create a dictionary of even numbers from 0 to 9 and their squares.
even_squares = {x: x**2 for x in range(10) if x % 2 == 0} print(even_squares) # Output: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
3. Using a Function in Dictionary Comprehension:
Create a dictionary of numbers from 0 to 4 and their factorials.
import math factorials = {x: math.factorial(x) for x in range(5)} print(factorials) # Output: {0: 1, 1: 1, 2: 2, 3: 6, 4: 24}
4. Inverting a Dictionary:
Swap the keys and values in an existing dictionary.
original = {'a': 1, 'b': 2, 'c': 3} inverted = {v: k for k, v in original.items()} print(inverted) # Output: {1: 'a', 2: 'b', 3: 'c'}
5. Combining Multiple Iterables:
Create a dictionary from two lists using zip.
keys = ['name', 'age', 'city'] values = ['Alice', 25, 'New York'] combined = {k: v for k, v in zip(keys, values)} print(combined) # Output: {'name': 'Alice', 'age': 25, 'city': 'New York'}
Nested Dictionary Comprehensions
You can also create nested dictionaries using dictionary comprehensions.
nested_dict = {i: {j: j**2 for j in range(5)} for i in range(3)} print(nested_dict) # Output: # { # 0: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}, # 1: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}, # 2: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16} # }
Dictionary Comprehension with Complex Conditions
You can include more complex conditions within the comprehension.
filtered_dict = {x: x**2 for x in range(10) if x % 2 == 0 and x % 3 == 0} print(filtered_dict) # Output: {0: 0, 6: 36}
Summary
- Basic Syntax:
{key_expression: value_expression for item in iterable}
- Conditionals:
{key_expression: value_expression for item in iterable if condition}
- Functions in Comprehensions: Apply functions to either keys or values within comprehensions.
- Inverting Dictionaries: Swap keys and values by iterating over
items()
. - Combining Iterables: Use
zip()
to combine multiple iterables into a dictionary. - Nested Comprehensions: Create dictionaries within dictionaries.
- Complex Conditions: Apply multiple conditions to filter items.
Dictionary comprehensions provide a powerful and expressive way to create and manipulate dictionaries in a concise manner.
Comments
Post a Comment