Задать вопрос
@nnicandeveloper

Почему словарь выдаёт не тот ключ?

есть словарь.
{'Улан-Удэ': 65, 'Иркутск': 2, 'Шаралдай': 1, 'Санкт-Петербург': 1, 'Москва': 5, 'New York City': 1, 'Южно-Сахалинск': 1, 'Ростов-на-Дону': 1, 'Улюкчикан': 1, 'Мухоршибирь': 1, 'Masaya': 1, 'Barcelona': 1, 'Новосибирск': 1, 'Chicago': 1, 'Taoyuan': 1, 'Madrid': 1, 'München': 1, 'Ōsaka': 1, 'Киев': 1, 'Рай (деревня)': 1}
Программа которая должна выводить ключ с наибольшим значением,
print(max(d))
но почему то он выдаёт в данном случае Южно-Сахалинск, хотя должен Улан-Удэ.
При этом вывод наибольшего значения работает верно
print(max(d.value()))

Вывод: 65

что не так?
как сравнить ключи по их значению, и вывести КЛЮЧ с максимальным значением
  • Вопрос задан
  • 199 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
В данном случае нужно так:
import operator
data = {'Улан-Удэ': 65, 'Иркутск': 2, 'Шаралдай': 1, 'Санкт-Петербург': 1, 'Москва': 5, 'New York City': 1, 'Южно-Сахалинск': 1, 'Ростов-на-Дону': 1, 'Улюкчикан': 1, 'Мухоршибирь': 1, 'Masaya': 1, 'Barcelona': 1, 'Новосибирск': 1, 'Chicago': 1, 'Taoyuan': 1, 'Madrid': 1, 'München': 1, 'Ōsaka': 1, 'Киев': 1, 'Рай (деревня)': 1}

max(data.items(), key=operator.itemgetter(1))[0]


'Улан-Удэ'
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@immelnikoff
Изучаю БД
но почему то он выдаёт в данном случае Южно-Сахалинск, хотя должен Улан-Удэ

С чего бы это? Строки сравниваются лексикографически: 'Южно-Сахалинск' > 'Улан-Удэ'.
Подсказка:
print(ord('Ю'))
print(ord('У'))
_____________
1070
1059
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы