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
相关产品推荐
相关产品推荐

