以下是一个示例代码,展示了如何按日期在范围内对查询结果进行分组:
import datetime
from itertools import groupby
# 示例数据
results = [
{"name": "Alice", "date": datetime.date(2022, 1, 1)},
{"name": "Bob", "date": datetime.date(2022, 1, 1)},
{"name": "Charlie", "date": datetime.date(2022, 1, 2)},
{"name": "David", "date": datetime.date(2022, 1, 3)},
{"name": "Eve", "date": datetime.date(2022, 1, 3)},
{"name": "Frank", "date": datetime.date(2022, 1, 4)},
{"name": "Grace", "date": datetime.date(2022, 1, 4)},
]
# 定义日期范围
start_date = datetime.date(2022, 1, 1)
end_date = datetime.date(2022, 1, 3)
# 对查询结果按日期进行排序
sorted_results = sorted(results, key=lambda x: x['date'])
# 使用 itertools.groupby 对结果进行分组
grouped_results = groupby(sorted_results, key=lambda x: x['date'])
# 遍历分组后的结果
for date, group in grouped_results:
# 检查日期是否在范围内
if start_date <= date <= end_date:
print("Date:", date)
print("Results:")
for item in group:
print(item)
print("---")
这段代码首先定义了一个示例数据列表 results
,其中每个项都包含一个 name
和 date
属性。然后,通过定义 start_date
和 end_date
变量,指定了日期范围。
接下来,代码对查询结果按日期进行排序,并使用 itertools.groupby
函数对结果进行分组。分组的依据是日期,通过 key=lambda x: x['date']
指定。
最后,代码遍历分组后的结果,并在范围内的日期中打印出每个日期和对应的结果。
输出结果如下:
Date: 2022-01-01
Results:
{'name': 'Alice', 'date': datetime.date(2022, 1, 1)}
{'name': 'Bob', 'date': datetime.date(2022, 1, 1)}
---
Date: 2022-01-02
Results:
{'name': 'Charlie', 'date': datetime.date(2022, 1, 2)}
---
Date: 2022-01-03
Results:
{'name': 'David', 'date': datetime.date(2022, 1, 3)}
{'name': 'Eve', 'date': datetime.date(2022, 1, 3)}
---
上一篇:按日期在多个组内复制值