my_dict = {key: value for key, value in iterable}
iterable
- это любой итерируемый объект, возвращающий пары (ключ, значение). Например:
my_dict = {i: i*i for i in range(5)}
Создать словарь с помощью генератора в Python можно несколькими способами, используя либо генератор словаря (dictionary comprehension), который является наиболее читаемым и предпочтительным, либо комбинируя zip
и dict
с генератором:
1. Генератор словаря (Dictionary Comprehension):
# Пример: Создание словаря, где ключи - числа от 0 до 4, а значения - их квадраты.
squares = {x: x**2 for x in range(5)}
print(squares) # Вывод: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# Более сложный пример:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict) # Вывод: {'a': 1, 'b': 2, 'c': 3}
В этом подходе мы используем синтаксис {key_expression: value_expression for item in iterable [if condition]}
. Часть [if condition]
опциональна и позволяет добавить фильтрацию элементов.
2. Использование zip
и dict
с генератором:
# Пример: Тот же, что и выше, но другим способом.
keys = ['a', 'b', 'c']
values = [1, 2, 3]
my_dict = dict((k, v) for k, v in zip(keys, values))
print(my_dict) # Вывод: {'a': 1, 'b': 2, 'c': 3}
# Другой пример с условием:
numbers = range(10)
even_dict = dict((x, x*2) for x in numbers if x % 2 == 0)
print(even_dict) # Вывод: {0: 0, 2: 4, 4: 8, 6: 12, 8: 16}
Здесь мы сначала создаем генератор кортежей (key, value)
с помощью zip
, а затем передаем его в функцию dict
для преобразования в словарь. Этот способ немного менее читаемый, чем dictionary comprehension, но может быть полезен в определенных ситуациях.
Преимущества использования генераторов словарей: