Skip to main content

Python Dictionary comprehensions

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

  1. Simple Dictionary Comprehension:

    Create a dictionary where the keys are numbers from 0 to 4 and the values are their squares.

squares = {x: x**2 for x in range(5)}
print(squares)  # Output: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

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