Python如何从字典列表生成映射字典并合并字段到另一字典列表
Python字典列表匹配关联字段实现方案
生成映射字典的实现方法
你需要的lcreate映射字典可以直接通过Python字典推导式遍历keylist生成,一行代码即可完成:
lcreate = {item['p_id']: item['fam_id'] for item in keylist}
这段代码会逐个读取keylist中每个字典的p_id作为键、对应fam_id作为值,最终生成的结构和你预期的{'001': 'FAM98', '002': 'FAM1978', '003': 'FAM1978'}完全一致。
完整可运行代码
# 示例输入数据 keylist = [{'p_id':'001','fam_id':'FAM98','update':'2021-07-29'},{'p_id':'002','fam_id':'FAM1978','update':'2021-07-29'},{'p_id':'003','fam_id':'FAM1978','update':'2021-07-29'}] persons = [{'person_id':'001','dob':'01-20-1997','mom_id':'34','color':'brown'},{'person_id':'002','dob':'12-05-2001','mom_id':'003', 'color':'black'},{'person_id':'003','dob':'01-02-1977','mom_id':'320', 'color':'brown'}] # 生成p_id到fam_id的映射 lcreate = {item['p_id']: item['fam_id'] for item in keylist} # 批量给persons添加fam_id字段 for dic in persons: dic["fam_id"] = lcreate[dic["person_id"]] # 打印结果验证 print(persons)
方案说明
整体时间复杂度为O(n+m)(n为keylist长度、m为persons长度),比嵌套循环匹配的O(n*m)方案性能高很多,数据量越大优势越明显。
内容的提问来源于stack exchange,提问作者Fernanda
相关产品推荐
相关产品推荐

