📜  Python|按日期对给定的字典列表进行排序(1)

📅  最后修改于: 2023-12-03 14:46:28.617000             🧑  作者: Mango

Python | 按日期对给定的字典列表进行排序

介绍

在 Python 中,我们可以使用 sorted() 函数来对列表进行排序。然而,如果我们想要按日期来对字典列表进行排序,需要使用一些特殊方法和模块。在这篇教程中,我们将介绍如何使用 Python 中的 datetimesorted() 函数,对给定的字典列表按日期进行排序。

操作步骤
1. 创建一个字典列表

首先,我们需要创建一个包含日期的字典列表来演示排序操作。代码如下:

data = [
    {
        "date": "2022-02-18",
        "value": "100"
    },
    {
        "date": "2022-02-19",
        "value": "200"
    },
    {
        "date": "2022-02-17",
        "value": "50"
    }
]

其中,每个字典表示一个数据项,包含 “date” 和 “value” 两个键值对。这里的日期都使用字符串表示,而不是 Python 的日期类型。

2. 转换字符串日期为 Python 的日期类型

由于 sorted() 在比较日期时需要使用日期类型而不是字符串,因此我们需要将字符串日期转换为 Python 的日期类型。这个过程可以使用 datetime 模块中的 datetime.strptime() 函数。

from datetime import datetime

for item in data:
    item["date"] = datetime.strptime(item["date"], "%Y-%m-%d")
3. 对字典列表进行排序

现在,我们已经将所有日期转换为了 Python 的日期类型,可以使用 sorted() 函数对列表进行排序了。

sorted_data = sorted(data, key=lambda x: x["date"])

其中,key 参数指定了按哪个键进行排序,这里我们选择按 “date” 键排序。注意,这里的 lambda 表达式用来获取每个字典中的 “date” 值,这个值将作为 sorted() 函数的排序依据。

4. 输出排序结果

最后,我们可以遍历排序后的字典列表,将排序结果输出到控制台。

for item in sorted_data:
    print(item)
完整代码

完整的 Python 代码如下:

from datetime import datetime

data = [
    {
        "date": "2022-02-18",
        "value": "100"
    },
    {
        "date": "2022-02-19",
        "value": "200"
    },
    {
        "date": "2022-02-17",
        "value": "50"
    }
]

for item in data:
    item["date"] = datetime.strptime(item["date"], "%Y-%m-%d")

sorted_data = sorted(data, key=lambda x: x["date"])

for item in sorted_data:
    print(item)

运行这个程序,你将看到输出的排序结果如下:

{'date': datetime.datetime(2022, 2, 17, 0, 0), 'value': '50'}
{'date': datetime.datetime(2022, 2, 18, 0, 0), 'value': '100'}
{'date': datetime.datetime(2022, 2, 19, 0, 0), 'value': '200'}

注意,输出结果中的日期都已经被转换为了 Python 的日期类型。