我想組合兩個結構輕微的嵌套字典(一個是字典串列,另一個是嵌套字典)。非常感謝您的幫助!
GPP_projects =
[{'CompanyId': 61149,
'Id': 44},
{'CompanyId': 61307,
'Id': 45}]
GPP_companies =
{61149: {
'Name': 'xyz',
'CompanyId': 61149},
61307: {
'Name': 'abc',
'CompanyId': 61307}}
#wanted outcome
GPP_combined =
[{'CompanyId': 61149,
'Id': 44,
'Name': 'xyz'}
{'CompanyId': 61307,
'Id': 45,
'Name': 'abc'}}]
uj5u.com熱心網友回復:
您可以使用一種pandas方法,也可以簡單地執行以下操作
GPP_combined = [{**data, **GPP_companies.get(data['CompanyId'], {})} for data in GPP_projects]
這將檢查字典中是否有CompanyId,GPP_companies如果有,它將添加它。如果那里沒有 id,GPP_companies它將回傳一個空字典,它什么也不做。
取決于您在以下情況下要執行的操作:
- 沒有?
CompanyId_GPP_companies - 如果有錯誤
GPP_companies意味著 {**a, **b} 將覆寫寫入有效欄位GPP_projects
輸出
GPP_projects =[{'CompanyId': 61149,
'Id': 44},
{'CompanyId': 61307,
'Id': 45,}]
GPP_companies = {61149: {
'Name': 'xyz',
'CompanyId': 61149},
61307: {
'Name': 'abc',
'CompanyId': 61307}}
#wanted outcome
GPP_combined =[{'CompanyId': 61149,
'Id': 44,
'Name': 'xyz'},
{'CompanyId': 61307,
'Id': 45,
'Name': 'abc'}]
GPP_combined = [
{**data, **GPP_companies.get(data["CompanyId"], {})}
for data in GPP_projects
]
"""
>> GPP_combined
[{'CompanyId': 61149, 'Id': 44, 'Name': 'xyz'},
{'CompanyId': 61307, 'Id': 45, 'Name': 'abc'}]
"""
為了python 2.7
for data in GPP_projects:
company_id = data['CompanyId']
company_obj = GPP_companies.get(company_id)
if company_rec:
data['Name'] = company_obj['Name']
這個修改GPP_projects或者你可以做一個副本以確保你沒有修改GPP_projects。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465797.html
上一篇:Python字典:pop或del
