2

在脚本中,我有一个 OrderedDictgroups,它按字母顺序获取键/值对。

在脚本的另一部分,我正在检查与以下相同的文件key

for (key, value) in groups.items():        
    file = open(key, 'r') 
    # do stuff

事情发生得很好,其中一部分是为每个文件打印一个状态行,但是我怎样才能让 Python 按字母顺序遍历groups,或者至少按数字顺序遍历它们(因为它们是按字母顺序输入的)?

4

2 回答 2

2

如果您只想按键的顺序遍历字典,则可以使用常规字典和sorted()

>>> d = dict(s=5,g=4,a=6,j=10)
>>> d
{'g': 4, 's': 5, 'j': 10, 'a': 6}
>>> for k in sorted(d):
        print(k, ':', d[k])


a : 6
g : 4
j : 10
s : 5
>>> 

(请原谅 python3 print()

如果您真的想坚持使用有序的 dict,请阅读文档,其中显示了重新排序的示例OrderedDict

>>> # regular unsorted dictionary
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}

>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])

如果您真的首先将它们OrderedDict按字母顺序输入,那么我不确定您为什么会遇到麻烦。

于 2013-05-23T04:42:29.800 回答
2

an 的全部意义OrderedDict在于您可以按照输入键的顺序正常迭代它:

>>> from collections import OrderedDict
>>> d = OrderedDict()
>>> d[1] = 2
>>> d[0] = 3
>>> d[9] = 2
>>> for k, v in d.items():
        print(k, v)


(1, 2)
(0, 3)
(9, 2)

只要确保您没有提供OrderedDict(...)字典来初始化它,否则它开始时是无序的。

于 2013-05-23T04:21:15.003 回答