← Все вопросы
Как найти ВСЕ ключи с максимальным значением, если их несколько?
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 месяца назад
Ваш ответ
Войдите, чтобы ответить на вопрос.