在脚本中,我有一个OrderedDict groups
,它按字母顺序输入键/值对。
在脚本的另一部分中,我正在检查与key
相同的文件,如下所示:
for (key, value) in groups.items():
file = open(key, 'r')
# do stuff
东西发生得很好,其中一部分是为每个文件打印一个状态行,但我怎样才能让Python按字母顺序迭代groups
,或者至少按照它们的顺序进行数字化(因为它们正在输入按字母顺序反正)?
答案 0 :(得分:3)
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(...)
字典来初始化它,或者它是从无序开始的。
答案 1 :(得分:1)
如果你想要做的就是按照键的顺序遍历字典,你可以使用常规字典和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()
)
如果您真的想坚持使用有序的字典,请阅读documentation,其中显示重新排序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
,那么我不确定你为什么遇到麻烦。