Python:按字母顺序遍历OrderedDi

2024-06-09 00:09:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在脚本的另一部分中,我将检查与key相同的文件,如下所示:

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

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


Tags: 文件keyin脚本for顺序value字母
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
>>> 

(请原谅Python)

如果您真的想坚持使用有序dict,那么请阅读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中,那么我不知道你为什么有麻烦。

一个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(...)字典提供初始化它的信息,否则它会无序启动。

相关问题 更多 >