Генератор словарей в Python — использование на примерах

В этом уроке вы узнаете об использовании генератора словарей в Python для преобразования или фильтрации элементов в словаре.

Содержание

Что такое генератор словаря в Python?

Генератор словаря (dictionary comprehension) позволяет вам запустить цикл for для словаря и выполнить что-то над каждым элементом, например преобразование или фильтрацию, и вернуть новый словарь.

В отличие от цикла for, словарное понимание предлагает более выразительный и краткий синтаксис, если вы его правильно используете.

Вот общий синтаксис для генератора словаря:

{key:value for(key,value) in dict.items() if condition}

Это выражение возвращает новый словарь, элемент которого указан key: value.

Примеры с генератором словаря Python

Мы рассмотрим, как использовать генератор словаря для преобразования и фильтрации элементов в словаре.

1) Преобразование словаря

Предположим, что у вас есть следующий словарь, элементами которого являются символ акции и цена:

stocks = {
    'AAPL': 121,
    'AMZN': 3380,
    'MSFT': 219,
    'BIIB': 280,
    'QDEL': 266,
    'LVGO': 144
}

Чтобы увеличить цену каждой акции на 2%, вы можете использовать такой цикл:

stocks = {
    'AAPL': 121,
    'AMZN': 3380,
    'MSFT': 219,
    'BIIB': 280,
    'QDEL': 266,
    'LVGO': 144
}

new_stocks = {}
for symbol, price in stocks.items():
    new_stocks[symbol] = price*1.02

print(new_stocks)

Выход:

{'AAPL': 123.42, 'AMZN': 3447.6, 'MSFT': 223.38, 'BIIB': 285.6, 'QDEL': 271.32, 'LVGO': 146.88}

Как это работает.

  • Сначала перебираем элементы словаря акций.
  • Во-вторых, увеличим цену на 2% и добавим товар в новый словарь(new_stocks).

В следующем примере показано, как использовать генератор словаря для достижения того же результата:

stocks = {
    'AAPL': 121,
    'AMZN': 3380,
    'MSFT': 219,
    'BIIB': 280,
    'QDEL': 266,
    'LVGO': 144
}

new_stocks = {symbol: price * 1.02 for(symbol, price) in stocks.items()}

print(new_stocks)

Это эквивалентно аналогу цикла for:

для цикла

new_stocks = {}
for symbol, price in stocks.items():
    new_stocks[symbol] = price*1.02

понимание словаря

new_stocks = {symbol: price * 1.02 for(symbol, price) in stocks.items()}

2) Использование генератора для фильтрации словаря

Чтобы выбрать акции, цены которых превышают 200, вы можете использовать следующий цикл for:

stocks = {
    'AAPL': 121,
    'AMZN': 3380,
    'MSFT': 219,
    'BIIB': 280,
    'QDEL': 266,
    'LVGO': 144
}

selected_stocks = {}
for symbol, price in stocks.items():
    if price > 200:
        selected_stocks[symbol] = price

print(selected_stocks)

Как это работает.

  • Сначала перебираем элемент словаря акций.
  • Затем добавьте элемент в словарь selected_stocks, если цена превышает 200.

В следующем примере dictionary comprehension используется с предложением if для получения того же результата:

stocks = {
    'AAPL': 121,
    'AMZN': 3380,
    'MSFT': 219,
    'BIIB': 280,
    'QDEL': 266,
    'LVGO': 144
}

selected_stocks = {s: p for(s, p) in stocks.items() if p > 200}

print(selected_stocks)

И вы можете сравнить понимание цикла for и словаря:

для цикла

selected_stocks = {}
for symbol, price in stocks.items():
    if price > 200:
        selected_stocks[symbol] = price

понимание словаря

selected_stocks = {s: p for(s, p) in stocks.items() if p > 200}
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *