Есть ли «однострочный» способ получить список ключей из словаря в отсортированном порядке? - PullRequest
3 голосов
/ 29 ноября 2008

Метод list sort() - это функция-модификатор, которая возвращает None.

Так что, если я хочу перебрать все ключи в словаре, я не могу сделать:

for k in somedictionary.keys().sort():
    dosomething()

Вместо этого я должен:

keys = somedictionary.keys()
keys.sort()
for k in keys:
    dosomething()

Есть ли симпатичный способ перебирать эти ключи в отсортированном порядке, не разбивая его на несколько шагов?

Ответы [ 3 ]

19 голосов
/ 29 ноября 2008
for k in sorted(somedictionary.keys()):
    doSomething(k)

Обратите внимание, что вы также можете получить все ключи и значения, отсортированные по ключам следующим образом:

for k, v in sorted(somedictionary.iteritems()):
   doSomething(k, v)
7 голосов
/ 29 ноября 2008

Могу ли я ответить на свой вопрос?

Я только что обнаружил удобную функцию "сортировка", которая делает именно то, что я искал.

for k in sorted(somedictionary.keys()):
    dosomething()

Отображается в Python 2.5, словарь 2, сортировка ключей

6 голосов
/ 13 мая 2009

На самом деле, .keys () не требуется:

for k in sorted(somedictionary):
    doSomething(k)

или

[doSomethinc(k) for k in sorted(somedict)]
...