#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 передаётся имя функции, которая из сложного составляющего сортируемого возвращает значение, по которому необходимо произвести сортировку. Здесь можно прочитать подробнее. Также советую ознакомиться с официальной документацией на эту тему.
Комментариев нет:
Отправить комментарий