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

如何用Python遍历字典套列表套字典结构并提取自定义字段值

解决方案

你的问题核心是原始数据中的自定义字段值是包裹在列表里的JSON字符串,直接当作字典遍历必然报错,得先解析这个JSON字符串,再提取需要的字段。

步骤说明

  1. 识别数据结构:customfield_10067的值是一个列表,列表内的元素是JSON格式字符串,不是现成的字典。
  2. 解析JSON字符串:用json.loads()将字符串转换为Python字典。
  3. 提取目标字段:从解析后的字典的value键中,取出workspaceId、objectId、id三个字段。
  4. 构建最终字典:将处理后的值映射回原字段名。

完整代码示例

import json

# 模拟你的request.data中的原始结构
raw_data = {
    u'customfield_10067': [
        u'{"field_type":"cmdb-object-cftype","value":{"workspaceId":"dsjahdjasf-61f7-4421-9ced-df122a122d603","name":"test","objectId":"14","id":"dsjahdjasf-61f7-4421-9ced-df122a122d603:14"}}'
    ]
}

result = {}
for field, value_list in raw_data.items():
    if "custom" in field:
        # 取出列表中的JSON字符串并解析
        json_str = value_list[0]
        parsed_data = json.loads(json_str)
        # 提取需要的字段并组装
        target_value = {
            "workspaceId": parsed_data["value"]["workspaceId"],
            "objectId": parsed_data["value"]["objectId"],
            "id": parsed_data["value"]["id"]
        }
        result[field] = target_value

print(result)

输出结果

{
    'customfield_10067': {
        'workspaceId': 'dsjahdjasf-61f7-4421-9ced-df122a122d603',
        'objectId': '14',
        'id': 'dsjahdjasf-61f7-4421-9ced-df122a122d603:14'
    }
}

你原有代码的问题

  • custom_fields是列表,直接用dict(custom_fields)会报错,因为列表转字典要求元素是键值对元组。
  • 未处理列表中的JSON字符串,直接将字符串当作字典遍历,自然会出现索引错误或序列化错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:43:13