Почему (dictionary.keys ()). Sort () не работает в python? - PullRequest
3 голосов
/ 31 января 2010

Я новичок в Python и не могу понять, почему такая вещь не работает.Я не могу найти проблему, поднятую в другом месте.

toto = {'a':1, 'c':2 , 'b':3}
toto.keys().sort()           #does not work (yields none)
(toto.keys()).sort()         #does not work (yields none)
eval('toto.keys()').sort()   #does not work (yields none)

Тем не менее, если я проверяю тип, я вижу, что я вызываю sort () в списке, так в чем проблема ..

toto.keys().__class__     # yields <type 'list'>

Единственный способ заставить меня работать - добавить некую временную переменную, которая выглядит ужасно

temp = toto.keys()
temp.sort()

Что мне здесь не хватает, должен быть более хороший способ сделать это.

Ответы [ 3 ]

7 голосов
/ 31 января 2010
sorted(toto.keys())

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

7 голосов
/ 31 января 2010

sort() сортирует список на месте . Он возвращает None, чтобы вы не думали, что он оставляет исходный список в покое и возвращает отсортированную копию.

1 голос
/ 31 января 2010

sort() метод сортировки на месте, возвращая none. Вы должны использовать sorted(toto.keys()), который возвращает новый повторяемый, отсортированный.

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