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

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

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

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

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

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

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


person Hugh    schedule 29.11.2008    source источник


Ответы (3)


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

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

for k, v in sorted(somedictionary.iteritems()):
   doSomething(k, v)
person Dustin    schedule 29.11.2008

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

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

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

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

person Hugh    schedule 29.11.2008

На самом деле .keys() не нужен:

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

or

[doSomethinc(k) for k in sorted(somedict)]
person odwl    schedule 13.05.2009