You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据ID中的日期将JSON记录分组为不同Payload?

根据ID中的日期分类JSON记录

首先,你已经找对了提取日期的思路,接下来咱们可以用字典分组的方式,把相同日期的记录归类到一起,再转换成你需要的db_payload格式,操作起来很顺畅。

步骤1:按日期分组记录

我们可以用一个字典,以日期字符串(比如'2019-03-20')作为键,对应的值是该日期下的所有记录列表。代码示例如下:

import datetime

# 假设你的原始db数据已经定义好
db = {
    "db_records": [
        {"webhook": 'NA', "xx": {"foo"}, "yy": {"otherfoo"}, "id": "UID1234567@2019-03-20T08:20:54.634838"},
        {"webhook": 'NA', "xx": {"bar"}, "yy": {"otherbar"}, "id": "UID9876543@2019-03-21T09:10:22.123456"},
        {"webhook": 'NA', "xx": {"baz"}, "yy": {"otherbaz"}, "id": "UID1122334@2019-03-20T14:30:15.987654"}
    ]
}

# 初始化分组字典
date_groups = {}

for record in db['db_records']:
    # 直接提取日期字符串,分组阶段用字符串比转datetime更高效
    date_str = record['id'].split('@')[1].split('T')[0]
    
    # 如果日期不在分组字典里,先创建对应的空列表
    if date_str not in date_groups:
        date_groups[date_str] = []
    # 将当前记录添加到对应日期的列表中
    date_groups[date_str].append(record)

步骤2:生成每个日期对应的db_payload

现在date_groups里已经按日期分好组了,我们可以把每个组转换成你需要的db_payload结构:

# 生成所有日期对应的payload
payloads = {}
for idx, (date_str, records) in enumerate(date_groups.items(), 1):
    payload_key = f"db_payload{idx}"
    payloads[payload_key] = {"db_records": records}

# 示例:输出2019-03-20对应的payload
print(payloads['db_payload1'])

运行后,payloads['db_payload1']就会是所有日期为2019-03-20的记录组成的结构,完全符合你想要的格式。

补充优化:按日期排序生成payload

如果需要按日期先后顺序生成payload(比如从早到晚),可以先对日期键排序再生成:

# 对日期字符串进行排序
sorted_dates = sorted(date_groups.keys())
payloads = {}
for idx, date_str in enumerate(sorted_dates, 1):
    payload_key = f"db_payload{idx}"
    payloads[payload_key] = {"db_records": date_groups[date_str]}

如果后续需要对日期做时间计算,再把date_str转成datetime.date对象就好,分组阶段用字符串更省事儿。

内容的提问来源于stack exchange,提问作者jake wong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:32:29