Почему сортировка списка ключей dict в одну строку с .sort () не работает, а sorted () работает? - PullRequest
0 голосов
/ 27 июня 2019

Практикуя Python (3.7.3), я чувствую, что хочу отсортировать ключи диктата. Но я иду против чего-то, чего я не понимаю, и не могу найти объяснения на SO.

edit: Я знаю, что метод sort () изменяет сам список, а sorted () оставляет исходный список без изменений и возвращает новый. Но кто-то может объяснить, почему конструктор list (), кажется, больше не возвращает список, когда я вызываю его метод sort ()?

Может кто-нибудь объяснить, почему это ничего не возвращает:

>>> md = {5: 3, 2: 1, 8: 9}
>>> ml = list(md.keys()).sort()
>>> ml
>>> 

Если я сделаю это в два отдельных шага, это сработает:

>>> ml = list(md.keys())
>>> ml
[5, 2, 8]
>>> ml.sort()
>>> ml
[2, 5, 8]
>>> 

Кроме того, я обнаружил, что, делая это в одну строку, используя sorted(), он также работает:

>>> sorted(list(md.keys()))
[2, 5, 8]

Ответы [ 2 ]

3 голосов
/ 27 июня 2019

sort сортирует итеративное на месте , но возвращает None, которое назначено ml. Поэтому в REPL ничего не отображается.

Напротив, sorted возвращает отсортированное представление исходного итерируемого.

1 голос
/ 27 июня 2019

sort() сортирует непосредственно ваш массив, а sorted() возвращает массив new .( Docs )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...