是否可以使用预定义的排序机制在Python中初始化空OrderedDict?

是否可以使用预定义的排序机制在Python中初始化空OrderedDict?,python,python-2.7,python-3.x,ordereddictionary,Python,Python 2.7,Python 3.x,Ordereddictionary,我可以找到的所有示例(,等等)都通过将数据传递给构造函数来定义OrderedDicts。从文档中: # 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',

我可以找到的所有示例(,等等)都通过将数据传递给构造函数来定义OrderedDicts。从文档中:

# 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,这会导致它保留键、值对的添加顺序

我正在寻找一种类似于下面的构造,除了没有“d.items()”之外。本质上,我要求它记住一个机制,而不提供一个例子,这听起来可能很疯狂。我唯一的“破解”方法是在一个条目上提供一个首字母“d”(见下文),还是有更好的方法

OrderedDict(sorted(d.items(), key=lambda t: t[0]))

谢谢大家!

orderedict
只有一种排序算法:插入顺序。无论项目添加到
orderedict
中的顺序如何,都是
orderedict
的顺序


如果需要其他方法,您可以编写
dict
子类,或者只编写一个排序函数,当顺序实际上很重要时可以应用该函数。

是的,这是默认行为?已排序词典不会在插入时对其内容重新排序。它们可以记住插入顺序并进行排序,但它们不只是在添加键时自动排序。因此,你正在寻找类似分类收集的东西。IIRC有一个使用二等分模块的配方,但是OrdDeDIT本身并不足够。你可以自己滚动,或者考虑使用A来保持内部排序。