基于相同值将字典列表与单个字典合并的实现方法
解决方案
首先注意到你的dict1是数字对应扩展名的映射,而我们需要的是扩展名对应数字的反向映射,这样才能快速匹配每个字典的FileExtension值。
步骤1:反转字典映射
先把dict1反转成扩展名到数字的映射,方便后续快速查找:
dict1 = {21409: 'docx', 44334: 'xlsx', 33635: 'jpg'} # 生成 {扩展名: 对应数字} 的反向映射 ext_to_count = {v: k for k, v in dict1.items()}
步骤2:遍历字典列表添加Count字段
循环遍历list_of_dicts中的每个字典,根据FileExtension从反向映射中取值,新增Count键:
list_of_dicts= [ {"Customer":"test1","Field1":"yy","Field2":"bb","FileExtension":"jpg"}, {"Customer":"test2","Field1":"aa","Field2":"bb","FileExtension":"docx"}, {"Customer":"test3","Field1":"cc","Field2":"yy","FileExtension":"xlsx"} ] for item in list_of_dicts: item['Count'] = ext_to_count[item['FileExtension']]
最终结果
执行后list_of_dicts会完全符合你的期望输出:
[{"Customer":"test1","Field1":"yy","Field2":"bb","FileExtension":"jpg","Count":33635},{"Customer":"test2","Field1":"aa","Field2":"bb","FileExtension":"docx","Count":21409},{"Customer":"test3","Field1":"cc","Field2":"yy","FileExtension":"xlsx","Count":44334}]
如果需要处理FileExtension不在dict1中的异常情况,可以改用get方法避免报错:
for item in list_of_dicts: # 不存在对应扩展名时,Count设为None(或其他默认值) item['Count'] = ext_to_count.get(item['FileExtension'], None)
内容的提问来源于stack exchange,提问作者Rusty cole
相关产品推荐
相关产品推荐

