将一个字典列表的键和值添加到另一个字典列表中



我有两个python字典列表。

一个是具有多个id和更新日期的键列表。

Other list是关于人员的,在人员列表中有person_id,对应于keylist中的p_id。我想将keylist中的fam_id添加到persons字典中。

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'}]

我想要得到:

persons = [{'person_id':'001','dob':'01-20-1997','mom_id':'34','color':'brown','fam_id':'FAM98'},
{'person_id':'002','dob':'12-05-2001','mom_id':'003','color':'black','fam_id':'FAM1978'},
{'person_id':'003','dob':'01-02-1977','mom_id':'320','color':'brown','fam_id':'FAM1978'}]

我不知道怎么得到这个。我尝试的是这个(但我不知道如何从keylist中获得lcreate):

lcreate = {'001': 'FAM98', '002': 'FAM1978', '003': 'FAM1978'}
for dic in persons: dic["fam_id"] = lcreate[dic["person_id"]]

如何从dict(keylist)的list中获得一个dict(lcreate) ?

您可以遍历两个列表,并在键匹配时更新persons字典。

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'}]
for x in persons:
for y in keylist:
if x['person_id'] == y['p_id']:
x['fam_id'] = y['fam_id']

结果

>>> persons
[{'person_id': '001', 'dob': '01-20-1997', 'mom_id': '34', 'color': 'brown', 'fam_id': 'FAM98'},
{'person_id': '002', 'dob': '12-05-2001', 'mom_id': '003', 'color': 'black', 'fam_id': 'FAM1978'},
{'person_id': '003', 'dob': '01-02-1977', 'mom_id': '320', 'color': 'brown', 'fam_id': 'FAM1978'}]

最新更新