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

Python字典转换函数问题:修复internal字段缺失问题

修复字典转换函数的internal字段缺失问题

修复后的完整代码

def convert_dict(input_list):
    converted = []
    # 定义camera的internal必填字段
    required_camera_internal_fields = ['type', 'length', 'point', 'cau', 'cal']
    
    for item in input_list:
        device_type = item.get('type')
        # 初始化转换后的设备字典,保留原数据的基础字段
        new_item = {
            'type': device_type,
            'name': item.get('name', '')
            # 如需保留其他字段,可在此处添加item.get('字段名', 默认值)
        }
        
        # 处理pc类型的internal字段
        if device_type == 'pc':
            new_item['internal'] = {}
        # 处理camera类型的internal字段
        elif device_type == 'camera':
            internal_data = item.get('internal', {})
            new_internal = {}
            # 遍历必填字段,缺失则设为空值(这里用None,可根据需求改为空字符串)
            for field in required_camera_internal_fields:
                new_internal[field] = internal_data.get(field, None)
            new_item['internal'] = new_internal
        
        converted.append(new_item)
    return converted

关键修复说明

  • 针对pc类型:强制将internal设为空字典,完全符合需求
  • 针对camera类型:预先定义必填的internal字段列表,遍历字段从原数据中取值,缺失字段统一设为None(可根据实际需求替换为空字符串'')
  • 保留原数据中的基础字段(如name),确保转换后数据的完整性

输入输出示例

输入示例

input_data = [
    {
        'type': 'pc',
        'name': 'Office Desktop',
        'internal': {'unused_field': 'test'}
    },
    {
        'type': 'camera',
        'name': 'Portable Camera',
        'internal': {'type': 'digital', 'length': 150}
    }
]

输出示例

[
    {
        'type': 'pc',
        'name': 'Office Desktop',
        'internal': {}
    },
    {
        'type': 'camera',
        'name': 'Portable Camera',
        'internal': {
            'type': 'digital',
            'length': 150,
            'point': None,
            'cau': None,
            'cal': None
        }
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:32:35