Python OrderedDict按日期排序 [英] Python OrderedDict ordered by date
问题描述
我正在尝试使用一个OrderedDict(Raymond Hettingers 版本 for pre2.7 Python)我的钥匙是日期。但是,它并没有正确地排序它,我想象它可能是根据ID进行排序。
I am trying to use an OrderedDict (Raymond Hettingers version for pre2.7 Python) where my keys are dates. However it does not order them correctly, I imagine it may be ordering based on the ID.
有没有人有任何建议如何做到这一点?
Does anyone have any suggestions of how this could be done?
推荐答案
OrderedDict根据其docstring,是一种记住插入顺序的dict。
因此,您需要以正确的顺序手动插入键/值对。
OrderedDict, according to its docstring, is a kind of dict that remembers insertion order. Thus, you need to manually insert the key/value pairs in the correct order.
# assuming unordered_dict is a dict that contains your data
ordered_dict = OrderedDict()
for key, value in sorted(unordered_dict.iteritems(), key=lambda t: t[0]):
ordered_dict[key] = value
编辑:请参阅utdemir的答案以获得更好的例子。使用 operator.itemgetter
可以提供更好的性能(60%更快,我使用下面的基准代码),这是一个更好的编码风格。您可以直接将 OrderedDict
应用于 sorted(...)
。
edit: See utdemir's answer for a better example. Using operator.itemgetter
gives you better performance (60% faster, I use the benchmark code below) and it's a better coding style. And you can apply OrderedDict
directly to sorted(...)
.
a = (1, 2)
empty__func = 0
def empty():
for i in xrange(N_RUNS):
empty__func
lambda_func = lambda t: t[0]
def using_lambda():
for i in xrange(N_RUNS):
lambda_func(a)
getter_func = itemgetter(0)
def using_getter():
for i in xrange(N_RUNS):
getter_func(a)
这篇关于Python OrderedDict按日期排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!