You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中为每个item批量关联账户与店铺数据?求通用实现

如何通用实现嵌套字典与列表项的自动合并?

问题描述

给定嵌套结构的原始数据:

raw_data_row = { 
    "account_level_data" : {"account_name": "A", "currency" :"USD"}, 
    "store_level_data" : {"store_name": "MyStore", "address" :"MyStreet"}, 
    "item_values" : [{"name": "a", "price" : 30}, {"name": "b", "price" : 40}]
}

需要生成将所有顶层嵌套字典的字段与列表中每个项合并后的结构,目标输出如下:

new_data = [
    {"account_name": "A", "currency" :"USD", "store_name":"MyStore", "address":"MyStreet", "name": "a", "price" : 30},
    {"account_name": "A", "currency" :"USD", "store_name":"MyStore", "address":"MyStreet", "name": "b", "price" : 40}
]

当前通过手动指定每个字段的方式实现,但希望找到无需硬编码字段名的通用方案。

通用解决方案

核心思路

  1. 先提取所有顶层的非列表型嵌套字典,合并为一个基础字典
  2. 遍历目标列表中的每个元素,将基础字典与元素字典合并,生成最终的条目

代码实现

raw_data_row = { 
    "account_level_data" : {"account_name": "A", "currency" :"USD"}, 
    "store_level_data" : {"store_name": "MyStore", "address" :"MyStreet"}, 
    "item_values" : [{"name": "a", "price" : 30}, {"name": "b", "price" : 40}]
}

# 构建基础字典:合并所有顶层的字典类型字段
base_dict = {}
for key, val in raw_data_row.items():
    if isinstance(val, dict):
        base_dict.update(val)

# 合并基础字典与每个列表项(用列表推导式简化代码)
new_data = [{**base_dict, **item} for item in raw_data_row["item_values"]]

print(new_data)

关键说明

  • 自动识别并合并所有顶层字典字段,无需手动指定字段名
  • 使用字典解包语法{**d1, **d2}合并字典(Python 3.5+支持),若需兼容旧版本,可替换为dict(base_dict, **item)
  • 若存在键冲突(基础字典与列表项有同名键),列表项的键值会覆盖基础字典的对应值
  • 若原始数据中有多个列表字段,只需指定需要关联的目标列表键(如示例中的item_values)

内容的提问来源于stack exchange,提问作者Elad Benda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:25:18