Python: получаем максимальный элемент списка, словаря или кортежа

Вступление

В этом руководстве мы рассмотрим, как найти максимальный элемент нескольких распространенных структур данных в Python, таких как список, словарь и кортеж.

Метод max(), встроенный в пространство имен Python, творит чудеса для встроенных типов.

Как получить максимальный элемент списка Python

Список – это встроенный тип Python, который используется для последовательного хранения нескольких ссылок в одном объекте в памяти.

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

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

# List of different type elements 
example_list = ["string", 5, "five", 4, "4"]

Примечание: если элементы не сопоставимы с помощью операторов сравнения (<,>,==,!=), функция max() не будет работать. Таким образом, мы убедимся, что список однороден, прежде чем пытаться найти максимальный элемент.

Пока вы правильно сравниваете элементы, вы можете найти максимальный элемент независимо от типа. Большую часть времени вы будете работать с целыми числами:

integer_list = [24, 9, 20, 17, 201, 16, 7]

Самый простой способ получить максимальный элемент списка – использовать встроенный метод max():

max_element = max(integer_list)
print("Max element of a list: ", max_element)

Ожидаемый результат:

Max element: 201

Вы можете сравнить строки лексикографически и найти лексикографически наибольшую строку в списке с помощью функции max():

string_list = ["string", "five",  "4"]
max_element = max(string_list)

print("Max element:", max_element)

Результат:

Max element: string

Другой способ найти максимальный элемент списка – отсортировать его с помощью метода sort(), а затем получить последний элемент отсортированного списка, поскольку метод sort() сортирует список в порядке возрастания:

integer_list = [24, 9, 20, 17, 201, 16, 7]
integer_list.sort()
# myList = [7, 9, 16, 17, 20, 24, 201]
max_element = integer_list[-1]

print("Max element of a list: ", max_element)

Этот код также будет иметь тот же результат:

Max element of a list: 201

Если мы также хотим найти индекс элемента max, самый простой способ – использовать встроенный метод index():

integer_list = [24, 9, 20, 17, 201, 16, 7]

max_element = max(integer_list)
max_element_index = integer_list.index(max_element)

print("Max element of a list: ", max_element, " at index: ", max_element_index)

Результат:

Max element of a list:  201  at index:  4

Как получить максимальный элемент словаря Python

Словари в Python используются для хранения пар ключ-значение. Пары с одним и тем же ключом не допускаются, и, начиная с Python 3.7, пары в словаре считаются упорядоченными.

Словари определяются списком пар key-value между парой фигурных скобок:

dictionary = {
    "key24": 24, 
    "key7": 9,
    "key20": 201,
    "key17": 17, 
    "key201": 201, 
}

Самый простой способ получить значение элемента max словаря также заключается в использовании встроенного метода max() со списком значений, передаваемых в качестве аргумента:

max_element = max(dictionary.values())
print("Max element of a dict: ", max_element)

Всё сводится к предыдущему методу, поскольку values() возвращает значения, хранящиеся в списке. Это даст правильный результат:

Max element of a dict: 201

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

max_val = max(dictionary.values())
max_val_key = max(dictionary, key=dictionary.get)

print("Max element of a dict:", max_val, "with the key:", max_val_key)

Так мы выведем значение элемента max и первого соответствующего ключа:

Max element of a dict: 201 with the key: key20

Примечание: у вас может возникнуть соблазн использовать max(dictionary), чтобы найти ключ с максимальным значением. Однако так вы вернёте сам максимальный ключ. В нашем случае программа вернула бы ключ с максимальным лексикографическим значением в словаре.

Как получить максимальный элемент кортежа

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

Обычно они используются для хранения только нескольких результатов, в виде типов возвращаемых функций.

В Python мы описываем кортежи с помощью пары скобок:

# Tuple of different element types 
exampleTuple = ("string", 5, "five", 4, "4")

Вы можете запускать метод max() только для совместимых типов данных:

int_tuple = (24, 9, 20, 17, 201, 16, 7)
string_tuple = ('one', 'two', 'three')

Вероятно, самый простой способ получить максимальный элемент кортежа – использовать встроенный метод max():

int_tuple = (24, 9, 20, 17, 201, 16, 7)
string_tuple = ('one', 'two', 'three')

max_int = max(int_tuple)
print("Max element of a tuple: ", max_int)

max_str = max(string_tuple)
print("Max element of a tuple: ", max_str)

Опять-таки, это приводит к наибольшему целому числу и лексикографически наибольшей строке:

Max element of a tuple:  201
Max element of a tuple:  two

Заключение

Поиск максимального элемента структуры данных – довольно распространенная задача. Все стандартные структуры данных в Python имеют аналогичный способ поиска элемента max – полагаясь на метод max() во всех случаях.

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

Ответить