Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
4270

Работа со словарями в Python: поиск ключа с максимальным значением

Словари в Python — это очень удобный и мощный инструмент, позволяющий хранить пары «ключ-значение». Иногда возникает задача найти ключ, соответствующий

Словари в Python — это очень удобный и мощный инструмент, позволяющий хранить пары «ключ-значение». Иногда возникает задача найти ключ, соответствующий максимальному значению. Предположим, у нас есть словарь, где ключами являются строки, а значениями — целые числа:

data = {'один': 1, 'два': 2, 'три': 3}

И мы хотим найти ключ, соответствующий максимальному значению. В данном случае, это будет 'три'.

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Решение задачи

Самый простой и элегантный способ решить эту задачу в Python — использовать встроенную функцию max() в сочетании с аргументом key.

max_key = max(data, key=data.get)

Функция max() возвращает максимальный элемент из переданных ей. Если передать ей словарь, она будет работать с его ключами. Однако, в данном случае нам нужно найти ключ, соответствующий максимальному значению.

Для этого мы используем аргумент key, который позволяет определить функцию, используемую для вычисления «веса» каждого элемента. В данном случае мы передаем в него метод словаря get, который возвращает значение по заданному ключу.

Таким образом, max(data, key=data.get) вернет ключ, значение которого является максимальным.

Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.

Альтернативный подход

Впрочем, есть и другой подход, который может показаться более понятным для новичков, но он менее эффективен. Этот подход заключается в создании промежуточного списка, где ключи и значения поменяны местами, после чего максимальное значение можно найти с помощью функции max().

inverse = [(value, key) for key, value in data.items()]
max_key = max(inverse)[1]

В данном случае, мы создаем список кортежей, где первым элементом идет значение, а вторым — ключ. Затем, вызывая max(), мы находим кортеж с максимальным первым элементом (значением из исходного словаря), и возвращаем второй элемент этого кортежа (ключ из исходного словаря).

Однако, этот подход менее эффективен по памяти, так как требует создания промежуточного списка. Кроме того, он кажется менее очевидным для тех, кто только начинает изучать Python.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий