首页 > 解决方案 > python:根据时间字符串的元素对dict列表进行排序

问题描述

我有一个字典列表。在其他元素中,列表中的每个 dict 都有一个日期和时间元素,看起来像 - 2018-08-14T14:42:14。我编写了一个函数,它比较两个这样的字符串并返回最近的一个。我如何使用它对列表进行排序(最近的优先)?此外,每个 dict 的大小都很大,因此,如果可能的话,我想对数组的索引进行排序(根据时间元素)而不是整个数组。我在这个网站上看到了其他类似的问题,但它们都讲述了基于已知数据类型(如 int 或 string)的排序。

标签: pythonsorting

解决方案


以 ISO 格式编写的日期有一个很好的属性 - 如果您按字母顺序对它们进行排序,那么您也可以根据日期值对它们进行排序(当然,如果它们属于一个时区)。只需使用list.sort()函数即可。这将就地排序列表。无论如何,您不必担心内存,因为创建第二个排序列表不会占用太多内存,因为它包含对第一个列表中字典的引用。

a = [
    {'time': '2018-01-02T00:00:00Z'},
    {'time': '2018-01-01T00:00:00Z'},
]

a.sort(key=lambda x: x['time'])
print(a)

推荐阅读