Страницы

Поиск по вопросам

среда, 1 января 2020 г.

Сортировка значений словаря при помощи sorted()

#python #python_3x #сортировка #словари #dict


Задача: отсортировать значения словаря. 

Наткнулся на непонятную конструкцию: key=my_dict.get

Почему в данном случае происходит сортировка, если get-это метод класса dict и у
него есть обязательный аргумент? 
Все остальное - понятно.

result = sorted(my_dict, key=my_dict.get, reverse=True)[:3]


Спасибо за ответ.
    


Ответы

Ответ 1



Параметр key в функции sorted(iterable, /, *, key=None, reverse=False) - функция, которая вызывается для каждого элемента из iterable. Таким образом мы можем сортировать сложные объекты, указывая атрибуты или элементы вложенных списков / массивов. Пример: In [21]: my_dict = {"b": 100, "c": 10, "a": 50} In [22]: sorted(my_dict, key=my_dict.get, reverse=True) Out[22]: ['b', 'a', 'c'] можно переписать более понятным, но менее элегантным способом: In [23]: sorted(my_dict, key=lambda x: my_dict.get(x), reverse=True) Out[23]: ['b', 'a', 'c']

Ответ 2



В качестве аргумента key функции sorted передаётся имя функции, которая из сложного составляющего сортируемого возвращает значение, по которому необходимо произвести сортировку. Здесь можно прочитать подробнее. Также советую ознакомиться с официальной документацией на эту тему.

Комментариев нет:

Отправить комментарий