Python генератор словарей
Генератор словарей в Python - это специальное выражение, которое позволяет создавать словари более компактным и эффективным способом. Он объединяет возможности генераторов списков и словарей, позволяя создавать словари с помощью итерации и фильтрации элементов.
Синтаксис генератора словарей следующий:
{ключ: значение for элемент in итерируемый_объект if условие}
Где:
- ключ — выражение, определяющее ключ словаря для каждого элемента.
- значение — выражение, определяющее значение словаря для каждого элемента.
- элемент — переменная, которая принимает значение из итерируемого объекта на каждой итерации.
- итерируемый_объект — объект, элементы которого будут использованы для создания словаря.
- условие (необязательно) — логическое условие, которое определяет, должен ли элемент войти в словарь или нет.
Ниже приведены примеры использования генератора словарей:
# Генератор словаря, содержащий числа вида {n: n^2} для n от 1 до 5
squares = {n: n**2 for n in range(1, 6)}
print(squares)
# Вывод: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Генератор словаря с фильтрацией по условию
numbers = [1, 2, 3, 4, 5]
odd_squares = {n: n**2 for n in numbers if n % 2 == 1}
print(odd_squares)
# Вывод: {1: 1, 3: 9, 5: 25}
# Генератор словаря с использованием функции в качестве ключа
names = ['Alice', 'Bob', 'Charlie']
name_lengths = {name: len(name) for name in names}
print(name_lengths)
# Вывод: {'Alice': 5, 'Bob': 3, 'Charlie': 7}
# Генератор словаря на основе другого словаря
person = {'name': 'John', 'age': 30, 'country': 'USA'}
person_info = {key.capitalize(): value for key, value in person.items()}
print(person_info)
# Вывод: {'Name': 'John', 'Age': 30, 'Country': 'USA'}
Генератор словарей позволяет сократить код и повысить его читабельность, позволяя одновременно итерироваться по исходным данным и создавать словарь с нужными значениями.