如何基于First Name与Last Name合并多组嵌套字典列表
基于姓名合并多组字典列表的实现方案
问题描述
需合并四组嵌套字典列表,以Customer Details中的First Name和Last Name为匹配依据,生成包含Kieran Wilson所有信息的字典列表。各组数据如下:
- Customer Details:
[{'First Name': 'Kieran', 'Last Name': 'Wilson', 'Age (Years)': '89', 'Marital Status': 'married or civil partner', 'Distance Commuted to Work (miles)': '0', 'Employer Company': 'N/A', 'Dependants': '3', 'Yearly Pension (GBP)': '7257', 'Sex': 'Male', 'Retired': 'TRUE', 'Yearly Salary (GBP)': '72838'}]
- Address:
[{'Address Street': '70 Lydia isle', 'Address City': 'Lake Conor', 'Address Postcode': 'S71 7XZ'}, {'Address Street': '00 Wheeler wells', 'Address City': 'Chapmanton', 'Address Postcode': 'L2 7BT'}]
- Credit Card info:
[{'Credit Card Start Date': '18-Aug', 'Credit Card Expiry Date': '27-Nov', 'Credit Card CVV': '875', 'Credit Card Number': '6.76374E+11', 'Bank IBAN': 'GB62PQKB71416034141571'}]
- Vehicle:
[{'Vehicle Make': 'Hyundai', 'Vehicle Model': 'Bonneville', 'Vehicle Type': 'Pickup', 'Vehicle Year': '2009'}]
实现步骤与代码
核心思路
- 从
Customer Details中精准筛选出Kieran Wilson的字典数据 - 针对不同类型的附属数据:
- 单条数据直接合并键值对到用户字典
- 多条数据(如地址)以列表形式存入用户字典,避免键冲突
代码实现
# 定义原始数据 customer_details = [{'First Name': 'Kieran', 'Last Name': 'Wilson', 'Age (Years)': '89', 'Marital Status': 'married or civil partner', 'Distance Commuted to Work (miles)': '0', 'Employer Company': 'N/A', 'Dependants': '3', 'Yearly Pension (GBP)': '7257', 'Sex': 'Male', 'Retired': 'TRUE', 'Yearly Salary (GBP)': '72838'}] address_list = [{'Address Street': '70 Lydia isle', 'Address City': 'Lake Conor', 'Address Postcode': 'S71 7XZ'}, {'Address Street': '00 Wheeler wells', 'Address City': 'Chapmanton', 'Address Postcode': 'L2 7BT'}] credit_card_info = [{'Credit Card Start Date': '18-Aug', 'Credit Card Expiry Date': '27-Nov', 'Credit Card CVV': '875', 'Credit Card Number': '6.76374E+11', 'Bank IBAN': 'GB62PQKB71416034141571'}] vehicle_list = [{'Vehicle Make': 'Hyundai', 'Vehicle Model': 'Bonneville', 'Vehicle Type': 'Pickup', 'Vehicle Year': '2009'}] # 筛选目标用户 target_customer = next((c for c in customer_details if c['First Name'] == 'Kieran' and c['Last Name'] == 'Wilson'), None) if target_customer: # 合并单条数据:信用卡、车辆 if credit_card_info: target_customer.update(credit_card_info[0]) if vehicle_list: target_customer.update(vehicle_list[0]) # 合并多条地址数据,以列表形式存储 target_customer['Addresses'] = address_list # 生成最终结果列表 result = [target_customer] print(result) else: print("未找到Kieran Wilson的信息")
代码说明
- 使用
next()函数高效筛选目标用户,无需遍历整个列表 update()方法直接合并字典键值对,适合单条附属数据- 地址数据以
Addresses为键存入列表,保留所有地址信息 - 若后续需要地址与用户的精准关联,可添加用户ID等关联字段扩展逻辑
内容的提问来源于stack exchange,提问作者Romoke
相关产品推荐
相关产品推荐

