Python中批量处理字典列表,新增annotations字段的方法求助
批量处理字典列表的解决方案
针对你需要批量转换字典列表的需求,这里提供两种实用的Python实现方案:
方式一:原地修改原列表(内存高效)
直接在原始列表的字典上进行修改,无需额外内存存储新列表,适合处理大型数据集。
# 假设你的字典列表变量名为data for review in data: # 将text字段的值赋值给新增的content字段 review['content'] = review['text'] # 初始化annotations空列表 review['annotations'] = [] # 遍历label中的每个标注项,转换为指定格式后加入annotations for label_item in review['label']: annotation = { 'start': label_item[0], 'end': label_item[1], 'label': label_item[2] } review['annotations'].append(annotation) # 若不需要保留原text和label字段,可取消以下两行注释 # del review['text'] # del review['label']
方式二:创建新列表(保留原始数据)
如果需要保留未修改的原始数据,可生成一个全新的处理后列表,避免影响原数据。
# 假设你的字典列表变量名为data processed_data = [] for review in data: # 复制原字典的所有字段(浅拷贝,适合字典值为不可变类型的场景) new_review = review.copy() # 添加content字段 new_review['content'] = new_review['text'] # 用列表推导式快速转换label为annotations格式 new_review['annotations'] = [ {'start': item[0], 'end': item[1], 'label': item[2]} for item in new_review['label'] ] # 若不需要保留原text和label字段,可取消以下两行注释 # del new_review['text'] # del new_review['label'] processed_data.append(new_review)
补充说明
- 浅拷贝(
copy())适用于字典中的值为字符串、数字等不可变类型的场景;如果字典包含嵌套可变结构(如其他列表/字典),建议使用copy.deepcopy()进行深拷贝。 - 列表推导式相比循环append写法更简洁高效,适合处理批量转换逻辑。
内容的提问来源于stack exchange,提问作者bavarianbear
相关产品推荐
相关产品推荐

