Функция словаря для поиска ключа, пары значений с наименьшим значением - PullRequest
0 голосов
/ 11 января 2020

Как напечатать самый дешевый предмет в словаре, когда словарь состоит из ключей и значений в виде предметов и их цены? Я попытался использовать операторную функцию для сортировки, но он преобразовывает словарь в кортеж, а затем я не могу отобразить ключ / значение словаря. есть ли другой подход?

Ответы [ 3 ]

2 голосов
/ 11 января 2020

Вы можете использовать min со словарем .items() и передавать значение пары для сортировки.

>>> data = {'foo': 17.5, 'bar': 5.8, 'abc': 12.6}
>>> min(data.items(), key=lambda i: i[1])
('bar', 5.8)
0 голосов
/ 11 января 2020

Моей первоначальной мыслью было понимание словаря :

>>> data = {'foo': 17.5, 'bar': 5.8, 'abc': 12.6}

>>> min_val = min(data.values())
>>> {k: v for k, v in data.items() if v == min_val}
{'bar': 5.8}

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

0 голосов
/ 11 января 2020

Ниже приведены ваши ответы:

Начинающий путь:

shoes_list = {'adidas':1000, 'Nike':3000, 'local': 100}

cheapest = ""

for key in shoes_list:
    if cheapest == "" or shoes_list[cheapest] > shoes_list[key]:
        cheapest = key
print(cheapest)  

Средний:

shoes_list = {'adidas':1000, 'Nike':3000, 'local': 100}
Cheapest = min(shoes_list, key=shoes_list.get)
print(Cheapest)

Самый эффективный способ:

import operator
shoes_list = {'adidas':1000, 'Nike':3000, 'local': 100}
print(min(shoes_list.items(), key=operator.itemgetter(1))[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...