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

时间:2014-11-13 22:08:13

标签: python python-2.7 python-3.x ordereddictionary

我可以找到的所有示例(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()"。从本质上讲,我要求它记住一个机制而不提供一个例子,这可能听起来很疯狂。是我唯一的选择" hack"通过提供一个初始的" d" (下面)有一个项目,还是有更好的方法?

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

谢谢!

1 个答案:

答案 0 :(得分:4)

function repeat() { var Name = prompt('What is your name?', 'Name'); if(!Name) { repeat(); } else { return; } } 只有一种排序算法:插入顺序。无论商品添加到OrderedDict的订单是OrderedDict所拥有的订单。

如果您想要其他方法,您可以编写OrderedDict子类,也可以只编写一个排序函数,以便在订单实际重要时应用。