Python 2.7.x中的默认有序字典
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)]