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

Python如何将响应对象custom_fields映射为Typescript易消费的结构化数据

可选实现方案

1. 列表推导式+字典推导式(最简洁Pythonic写法)

可以把嵌套循环直接写成推导式,无需显式声明空列表和append操作:

if __name__ == "__main__":
    import enum
    class FieldEnum(enum.IntEnum):
        ORDER_ID = 360018501198
        DATE = 1900000084913
        NAME = 360023508598

    r_obj = [
        {
            'custom_fields': [
                {'id': 360018501198, 'value': '5678'},
                {'id': 360023508598, 'value': 'Jim'},
                {'id': 1900000084913, 'value': '2021-09-03'}
            ]
        },
        {
            'custom_fields': [
                {'id': 360018501198, 'value': '1234'},
                {'id': 360023508598, 'value': 'Bob'},
                {'id': 1900000084913, 'value': '2021-09-03'}
            ]
        }
    ]
    # 核心推导式逻辑
    out = [{FieldEnum(f['id']).name.lower(): f['value'] for f in entry['custom_fields']} for entry in r_obj]
    print(out)

输出和现有代码完全一致。

2. 增加异常兼容的写法

如果接口返回的custom_fields可能出现不在枚举定义里的id,可以增加过滤逻辑避免报错:

out = []
for entry in r_obj:
    item = {}
    for f in entry['custom_fields']:
        try:
            key = FieldEnum(f['id']).name.lower()
            item[key] = f['value']
        except ValueError:
            # 忽略未定义的字段id,也可以按需求打日志
            continue
    out.append(item)

3. 封装为可复用函数

如果多处需要用到这个转换逻辑,可以单独封装函数,后续维护更方便:

def convert_custom_fields(entry: dict, enum_cls: enum.IntEnum) -> dict:
    return {enum_cls(f['id']).name.lower(): f['value'] for f in entry['custom_fields']}

# 调用
out = [convert_custom_fields(entry, FieldEnum) for entry in r_obj]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:27:03