Python 2.7.x中的默认有序字典

0 投票
2 回答
7961 浏览
提问于 2025-04-18 05:03

除了大约三年前在这个问题中给出的答案:

我可以在Python中使用有序的默认字典吗?

最近的Python版本有没有采纳任何实现呢?

如果没有,为什么不呢?

2 个回答

1

我现在用的不是2.7版本,所以没法测试。不过,这段代码应该是重新实现了一个从OrderedDict继承来的defaultdict子类:

from collections import OrderedDict

class DefaultOrderedDict(OrderedDict):
    def __init__(self, default):
        self.default = default
    def __getitem__(self, x):
        try:
            return OrderedDict.__getitem__(self, x)
        except KeyError:
            self[x] = self.default()
            return self[x]
4

不,使用默认选项时,你只能得到一个内置的字典,而这个字典是无序的。如果你想要一个有序的字典,你就必须导入OrderedDict模块。

from collections import OrderedDict
>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])

不过,你可以选择创建一个元组的列表,这样保持顺序。

比如说,不要这样写:

a = {'a': 1, 'b': 2, 'c':3}

而是这样写:

a = [('a', 1), ('b', 2), ('c', 3)]

撰写回答