除了从约3年前,在这个问题的答案:默认排序在Python 2.7.x字典
Can I do an ordered, default dict in Python?
有任何的实现被采纳到最新版本的Python?
如果不是,为什么不呢?
除了从约3年前,在这个问题的答案:默认排序在Python 2.7.x字典
Can I do an ordered, default dict in Python?
有任何的实现被采纳到最新版本的Python?
如果不是,为什么不呢?
不,对于默认选项,您将只有内置字典是而不是订购。如果你确实想要一个有序的词典,你将会有有导入模块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)]
我怕我不是2.7,所以无法测试,但这应该重新实现a defaultdict
从OrderedDict
开始分类:
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]
如果我遗漏了任何东西,请在评论中告诉我,因为我无法测试它 – mhlester