是否有“单行”方式从排序顺序获取字典中的键列表?

时间:2008-11-29 05:03:14

标签: python iterator syntactic-sugar

列表sort()方法是一个返回None的修饰符函数。

因此,如果我想迭代字典中的所有键,我就无法做到:

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

相反,我必须:

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

有没有一种很好的方法可以按排序顺序迭代这些键,而不必将其分解为多个步骤?

3 个答案:

答案 0 :(得分:19)

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

请注意,您还可以获取按键排序的所有键和值:

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

答案 1 :(得分:7)

我可以回答我自己的问题吗?

我刚刚发现了一个方便的功能“已排序”,这正是我所寻找的。

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

它显示在Python 2.5 dictionary 2 key sort

答案 2 :(得分:6)

实际上,没有必要使用.keys():

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

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