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

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

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

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

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

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

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

Ответ 1

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

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

for k, v in sorted(somedictionary.iteritems()):
   doSomething(k, v)

Ответ 2

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

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

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

Он отображается в ключевом произведении Python 2.5 Dictionary 2

Ответ 3

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

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

или

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