TL;DR
В большинстве ответов на этот вопрос в интернете говорится, что для этой цели нужно использовать отдельную библиотеку. Это не совсем так.
print(max(dict_, key=dict_.get))
income = {
'Иван': 20000,
'Пётр': 25000,
'Фёдор': 100000
}
print(max(income, key=income.get)) # Фёдор
income = {
'Иван': 20000,
'Пётр': 25000,
'Фёдор': 100000
}
# Ключ, начинающийся с "наибольшей" буквы в алфавите
print(max(income))
# Фёдор
# Наибольшее значение в словаре income
print(max(income.values()))
# 100000
# Наибольший элемент в списке
print(max([1, 4, 7, 5, 3, 99, 3]))
# 99
# Сравнение списков по элементам.
# Максимальным списком считается тот,
# в котором содержится максимальное число.
# Если максимальное число встречается
# в нескольких списках, возвращается
# первый из них.
print(max([1, 2, 3], [5, 6, 4]))
# [5, 6, 4]
# Максимальное значение в переданной последовательности чисел
print(max(5, 7, 99, 88, 123))
# 123
lst = [2, 4, 8, 16]
def inverse(val):
return -val
print(max(lst)) # 16
print(max(lst, key=inverse)) # 2
Совет: ключ словаря и параметр key называются одинаково, но путать их нельзя — между ними нет ничего общего.
income = {
'Иван': 20000,
'Пётр': 25000,
'Фёдор': 100000
}
print(max(income, key=income.get)) # Фёдор
income = {
'Иван': 20000,
'Пётр': 25000,
'Фёдор': 100000
}
print(min(income, key=income.get)) # Иван
# Конвертация словаря в списки + index(max())
def f1():
v=list(income.values())
k=list(income.keys())
return k[v.index(max(v))]
# Dictionary comprehension, чтобы поменять ключи и значения местами
def f2():
d3={v:k for k,v in income.items()}
return d3[max(d3)]
# filter() + lambda-функция
def f3():
return list(filter(lambda t: t[1]==max(income.values()), income.items()))[0][0]
# Как f3(), но более компактный
def f4():
m=max(income.values())
return list(filter(lambda t: t[1]==m, income.items()))[0][0]
# List comprehension
def f5():
return [k for k,v in income.items() if v==max(income.values())][0]
# Как и f5(), только без max() в comprehension
def f6():
m=max(income.values())
return [k for k,v in income.items() if v==m][0]
# Метод из этой статьи
def f7():
return max(income, key=income.get)
# Укороченная версия f1()
def f8():
v=list(income.values())
return list(income.keys())[v.index(max(v))]
# f7(), но с использованием lambda-функции
def f9():
return max(income, key=lambda k: income[k])
print(f1())
print(f2())
print(f3())
print(f4())
print(f5())
print(f6())
print(f7())
print(f8())
print(f9())
# Фёдор (везде)
income = {
'Иван': 20000,
'Пётр': 25000,
'Фёдор': 100000
}
v = list(income.values())
k = list(income.keys())
print(k[v.index(max(v))]) # Фёдор
days_worked = {
'Иван': [1, 1, 1, 1],
'Пётр': [1, 1, 1, 1, 1, 1],
'Фёдор': [1, 1, 1, 1, 1, 1, 1, 1]
}
# Длина 2 меньше, чем длина 4
print([1, 1] < [1, 1, 1, 1]) # True
print(max(days_worked, key=days_worked.get)) # 'Фёдор'
income1 = {'Иван': 1111,
'Пётр': 2222,
'Фёдор': 3333}
income2 = {'Данил': 4444,
'Анастасия': 5555,
'Филипп': 6666}
income3 = {'Григорий': 7777,
'Захар': 8888,
'Игорь': 999999999999}
list_of_dicts = [income1, income2, income3]
# Инициализируем пустой словарь
big_dict = {}
# Используем цикл for и метод update() для добавления пар ключ-значение
for dic in list_of_dicts:
big_dict.update(dic)
# Проверяем, что результат соответствует ожиданиям
print(big_dict)
{'Иван': 1111,
'Пётр': 2222,
'Фёдор': 3333,
'Данил': 4444,
'Анастасия': 5555,
'Филипп': 6666,
'Григорий': 7777,
'Захар': 8888,
'Игорь': 999999999999}
# Вызываем функцию max() и указываем аргумент key
print(max(big_dict, key=big_dict.get)) # 'Игорь'
d = {'Иван': 24,
'Пётр': 19,
'Фёдор': 35}
max_val = max(d.values())
print(max_val) # 35
d = {'Иван': 24,
'Пётр': 19,
'Фёдор': 35}
print(max(d)) # 'Фёдор'
print(max(d.keys())) # 'Фёдор'
Источник: Finxter