Python OrderedDict按日期排序 [英] Python OrderedDict ordered by date

查看:227
本文介绍了Python OrderedDict按日期排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆