Python多组同key嵌套字典合并为单一字典的通用实现咨询
通用实现代码
from collections import defaultdict merged = defaultdict(dict) # 遍历所有main层级节点的内容 for main_val in req.values(): for sub_key, sub_val in main_val.items(): merged[sub_key].update(sub_val) # 转换为cableN格式的最终结果 result = {f"cable{i+1}": content for i, content in enumerate(merged.values())} print(result)
实现说明
- 完全对齐你原有硬编码逻辑的输出结果,子键重复时后出现的main节点配置会覆盖之前的配置
- 自动适配任意数量的main层级节点,新增main3、main4等无需修改代码
- 自动适配每个main下的子键数量,新增z等子键时会自动生成对应cable3、cable4等输出键
如果不想引入额外依赖,也可以用原生字典实现:
merged = {} for main_val in req.values(): for sub_key, sub_val in main_val.items(): if sub_key not in merged: merged[sub_key] = {} merged[sub_key].update(sub_val) result = {f"cable{i+1}": content for i, content in enumerate(merged.values())}
针对你给出的3个main的测试输入,上述代码输出结果为:
{'cable1': {'a': 220, 'c': '1000', 'd': 'cooper', 'e': 20}, 'cable2': {'b': 66, 'c': '1200', 'd': 'Copper', 'f': 6}}
内容的提问来源于stack exchange,提问作者max
相关产品推荐
相关产品推荐

