Генератор словарей (Dict comprehension)

Опубликован: 26.11.2023 119

В Python есть очень мощные Pythonic способы быстрого и эффективного создания списков, словарей, множеств - буквально одной строкой кода.

На английском языке эти выражения называются:

  • List comprehension - списковое включение или генератор списка (более подробно описано здесь);
  • Dict comprehension - генератор словарей;
  • Set comprehension - генератор множеств (подробнее описано здесь).

Dict comprehension (генератор словарей).

Dict comprehension - это быстрый и удобный способ создания словаря на основе исходного итерируемого объекта, содержащего пары ключ - значение (аналогичный List comprehension).

Синтаксис: { key: value for key, value in iterable if condition }

  • key - ключи словаря;
  • value - значения ключей словаря;
  • iterable - исходный итерируемый объект, содержащий пары key - value;
  • condition - условное выражение (необязательный элемент генератора), при выполнении которого элемент iterable включается в создаваемый словарь.

Dict comprehension можно использовать для:

  • создания словарей на основе списков, кортежей или других итерируемых объектов;
  • преобразования элементов существующего словаря из одного вида в другой;
  • фильтрации и преобразования данных в процессе создания словаря.

Примеры использования Dict comprehension.

# создание словаря на основе списков
list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
list_b = ["январь", "февраль", "март", "апрель", "май", "июнь", 
              "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь"]

print({key: val for key, val in zip(list_a, list_b)})
{1: 'январь', 2: 'февраль', 3: 'март', 4: 'апрель', 5: 'май', 6: 'июнь', 7: 'июль', 8: 'август', 9: 'сентябрь', 10: 'октябрь', 11: 'ноябрь', 12: 'декабрь'}

# создание словаря на основе функции range()
print({num: num**2 for num in range(1, 11)})
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

# преобразование элементов существующего словаря
dict_num = {1: "Один", 2: "Два", 3: "Три", 4: "Четыре", 5: "Пять"}

print({key: x.lower() for key, x in dict_num.items() if key < 5})
{1: 'один', 2: 'два', 3: 'три', 4: 'четыре'}

Похожие посты

Использование метода dict.setdefault() для эффективной работы со словарем

Метод dict.get() значение по умолчанию для отсутствующих ключей

Сортировка словарей по значениям

Методы преобразования списка в строку и обратно

Комментариев нет.