我能找到的所有示例(in the documentation 等)都通过将数据传递给构造函数来定义 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]))
谢谢!
最佳答案
OrderedDict
只有一种排序算法:插入顺序。无论项目添加到 OrderedDict
的顺序是 OrderedDict
的顺序。
如果你想要一些其他的方法,你可以编写你的 dict
子类,或者只是一个排序函数,你可以在顺序非常重要时应用它。
关于python - 是否可以使用预定义的排序机制在 Python 中初始化一个空的 OrderedDict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26919373/