← Все вопросы

Как найти ВСЕ ключи с максимальным значением, если их несколько?

Задан 2 месяца назад460 просмотров2 ответа
14

max(d, key=d.get) возвращает только один ключ. А если максимум одинаковый у двух-трёх ключей — мне нужны все.

d = {"a": 5, "b": 2, "c": 5}
# нужно ["a", "c"]

2 ответа

24
✓ Принятый ответ — помог автору

Сначала найди значение максимума, потом отбери все ключи с ним:

m = max(d.values())
result = [k for k, v in d.items() if v == m]
# ['a', 'c']

max(d, key=d.get) тут не годится именно потому, что отдаёт только первый встретившийся максимум. А так ты проходишь словарь и собираешь все совпадения.

Fkalkf fkdpkgok На пустом словаре max() кинет ValueError — оберни проверкой if d · 2 месяца назад
6

[k for k, v in d.items() if v == max(d.values())].

Oleg Lubomirsky Работает, но max(d.values()) пересчитывается на каждой итерации — вынеси в переменную · 2 месяца назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект