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

从工单系统字典列表中筛选每个用户的最新时间戳

问题描述

我从工单系统拉取了一组字典列表,每个字典包含工单的用户姓名与timestamp。存在同一用户对应多条工单的情况,我需要筛选该列表,返回仅包含所有唯一用户及其最大Date值的字典列表。

获取数据的Python函数

def get_onboarded_users():
    # The ticket that it is retrieving looks something like this:
    # "(IT) - Onboarding Initiated - Bill Bob"
    print("Collecting Onboarded Users", end="")
    url = 'https://********************/api/v3/requests'
    headers = {"authtoken": "*********************************"}
    rtn = []
    input_data = '''{
        "list_info": {
            "row_count": 5000,
            "start_index": 1,
            "sort_field": "subject",
            "sort_order": "asc",
            "get_total_count": true,
            "search_fields": {
                "subject": "(IT) - Onboarding Initiated"
            }
        }
    }'''
    params = {'input_data': input_data}
    response = requests.get(url, headers=headers, params=params)
    i = json.loads(response.text)
    user_requests = i['requests']
    onboarded_users = {}
    for user_request in user_requests:
        subject = user_request['subject'].upper()
        create_date = req['created_time']['value']
        user = subject.split(' - ')
        onboarded_users['Name'] = user[2]
        onboarded_users['Date'] = int(create_date) / 1000
        rtn.append(onboarded_users.copy())
    print(" - Complete")
    return rtn

API返回原始数据

[
    { "Name": "Rob Smith", "Date": "1" },
    { "Name": "Rob Smith", "Date": "2" },
    { "Name": "Rob Smith", "Date": "3" },
    { "Name": "Bill Bob", "Date": "4" },
    { "Name": "Bill Bob", "Date": "7" },
    { "Name": "Sam Jackson", "Date": "1" }
]

期望结果

[
    { "Name": "Rob Smith", "Date": "3" },
    { "Name": "Bill Bob", "Date": "7" },
    { "Name": "Sam Jackson", "Date": "1" }
]

解决方案

可以通过字典暂存用户的最大日期值,再转换为目标格式的列表:

def filter_unique_users_with_max_date(original_list):
    user_date_map = {}
    for item in original_list:
        name = item["Name"]
        current_date = int(item["Date"])
        # 若用户未记录或当前日期更大,则更新
        if name not in user_date_map or current_date > user_date_map[name]:
            user_date_map[name] = current_date
    # 转换为要求的字典列表格式
    return [{"Name": name, "Date": str(date)} for name, date in user_date_map.items()]

# 测试示例
original_data = [
    { "Name": "Rob Smith", "Date": "1" },
    { "Name": "Rob Smith", "Date": "2" },
    { "Name": "Rob Smith", "Date": "3" },
    { "Name": "Bill Bob", "Date": "4" },
    { "Name": "Bill Bob", "Date": "7" },
    { "Name": "Sam Jackson", "Date": "1" }
]

print(filter_unique_users_with_max_date(original_data))

另外,原获取数据函数存在一处错误:create_date = req['created_time']['value']中的req应为user_request,修正后片段如下:

for user_request in user_requests:
    subject = user_request['subject'].upper()
    create_date = user_request['created_time']['value']  # 修正变量名
    user = subject.split(' - ')
    onboarded_users['Name'] = user[2]
    onboarded_users['Date'] = int(create_date) / 1000
    rtn.append(onboarded_users.copy())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:45:42