4

listsort()方法是一个修饰函数,它返回None.

因此,如果我想遍历字典中的所有键,我不能这样做:

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

相反,我必须:

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

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

4

3 回答 3

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

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

for k, v in sorted(somedictionary.iteritems()):
   doSomething(k, v)
于 2008-11-29T05:20:37.567 回答
7

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

我刚刚发现了方便的“排序”功能,它完全符合我的要求。

对于排序中的 k(somedictionary.keys()):
    做点什么()

它出现在Python 2.5 字典 2 键排序中

于 2008-11-29T05:06:35.880 回答
7

实际上, .keys() 不是必需的:

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

或者

[doSomethinc(k) for k in sorted(somedict)]
于 2009-05-13T05:54:38.103 回答