Генераторы словарей в Python

Создание словарей в Python с помощью генераторов

Генераторы словарей в Python — это эффективный и мощный инструмент для создания словарей в одной строке кода. Они основаны на концепции list comprehensions, но применяются для создания словарей.

Синтаксис генератора словарей

Самый базовый пример генератора словарей в Python можно представить следующим образом:

dictionary = {k: v for k, v in iterable}

Здесь iterable — это итерируемый объект, из которого мы получаем пары ключ-значение. На примере ниже мы создаем словарь, где ключами являются числа от 1 до 5, а значениями — их квадраты.

dictionary = {i: i**2 for i in range(1, 6)}
print(dictionary)

#{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Генераторы словарей с условием

Генераторы словарей также поддерживают условные конструкции. Это позволяет вам включать в словарь только те пары ключ-значение, которые удовлетворяют определенному условию.

dictionary = {i: i**2 for i in range(1, 6) if i%2 == 0}
print(dictionary)

#{2: 4, 4: 16}

В этом примере в словарь включаются только те числа, которые являются четными.

Генераторы словарей с несколькими условиями

Если вам нужно проверить несколько условий, вы также можете использовать конструкции if...elif...else внутри генератора словарей.

dictionary = {i: ('even' if i%2 == 0 else 'odd') for i in range(1, 6)}
print(dictionary)

#{1: 'odd', 2: 'even', 3: 'odd', 4: 'even', 5: 'odd'}

В этом примере ключами словаря являются числа от 1 до 5, а значениями — строки even (для четных чисел) или odd (для нечетных чисел).

Генераторы словарей на основе других словарей

Генераторы словарей могут использоваться для создания новых словарей на основе уже существующих словарей.

original_dictionary = {1: 'one', 2: 'two', 3: 'three'}
new_dictionary = {k: v.upper() for k, v in original_dictionary.items()}
print(new_dictionary)

#{1: 'ONE', 2: 'TWO', 3: 'THREE'}

В этом примере новый словарь создается на основе original_dictionary, но все значения в новом словаре приводятся к верхнему регистру.

Генераторы словарей на основе списков

Генераторы словарей можно использовать для создания словарей на основе списков. Важно отметить, что ключи словаря должны быть уникальными.

list1 = ['one', 'two', 'three']
list2 = [1, 2, 3]
dictionary = {k: v for k, v in zip(list1, list2)}
print(dictionary)

#{'one': 1, 'two': 2, 'three': 3}

Здесь два списка объединяются в пары ключ-значение с помощью функции zip(), после чего эти пары используются для создания словаря.

Заключение

Генераторы словарей в Python — это эффективный и мощный инструмент для создания и модификации словарей. Они позволяют сократить количество кода и улучшить его читаемость, а также обеспечивают большую гибкость при работе со словарями.

Содержание: