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

Python 2.6中如何将嵌套字典列表合并为单个字典列表

在Python 2.6中合并嵌套字典列表为单个字典列表

搞定这个需求很简单,咱们可以通过遍历嵌套结构,把外层的公共字段和每个子异常条目合并起来,生成一个扁平化的字典列表。以下是具体实现:

输入示例

先看一下你提供的输入结构(简化版):

INPUTJSON = [
    {
        'EXCEPTIONS': [
            {'LASTOCCURED': '2018-03-12 12:11:23', 'COUNT': 25, 'NAME': 'CLFRW0134W'},
            {'LASTOCCURED': '2018-03-12 12:11:42', 'COUNT': 10, 'NAME': 'SRV0145GH'}
        ],
        'JVM_NAME': 'TestiingAWS01',
        'GCCOUNT': 10
    },
    {
        'EXCEPTIONS': [
            {'LASTOCCURED': '2018-03-13 12:14:23', 'COUNT': 25, 'NAME': 'CLFRW0134W'}
            # 更多异常条目...
        ],
        # 其他外层字段...
    }
]

解决方案代码

针对Python 2.6的兼容性,我们可以这样写:

result = []
for entry in INPUTJSON:
    # 提取外层除EXCEPTIONS外的所有公共字段
    outer_fields = dict((key, value) for key, value in entry.iteritems() if key != 'EXCEPTIONS')
    # 遍历每个异常条目,合并字段
    for exception in entry['EXCEPTIONS']:
        # 复制异常字典,避免修改原数据,再合并外层字段
        merged_dict = exception.copy()
        merged_dict.update(outer_fields)
        result.append(merged_dict)

代码解释

  • 先初始化空列表result来存储最终的扁平化结果。
  • 遍历输入列表中的每个顶层条目entry:
    • 用生成器表达式构建outer_fields,筛选出顶层条目中除EXCEPTIONS外的所有键值对(比如JVM_NAME、GCCOUNT这些公共信息)。
    • 接着遍历当前条目的EXCEPTIONS列表里的每个异常字典:
      • 先复制异常字典(防止修改原始输入数据),再通过update()方法把外层公共字段合并进去,这样每个异常条目就带上了对应的JVM等信息。
      • 将合并后的字典添加到结果列表中。

输出示例

处理后的结果会是这样的扁平化列表:

[
    {'LASTOCCURED': '2018-03-12 12:11:23', 'COUNT': 25, 'NAME': 'CLFRW0134W', 'JVM_NAME': 'TestiingAWS01', 'GCCOUNT': 10},
    {'LASTOCCURED': '2018-03-12 12:11:42', 'COUNT': 10, 'NAME': 'SRV0145GH', 'JVM_NAME': 'TestiingAWS01', 'GCCOUNT': 10},
    {'LASTOCCURED': '2018-03-13 12:14:23', 'COUNT': 25, 'NAME': 'CLFRW0134W', 'JVM_NAME': 'xxx', 'GCCOUNT': yyy}
    # 更多合并后的条目...
]

注意事项

  • 如果外层字段和EXCEPTIONS里的字段重名,update()会用外层字段的值覆盖异常字典里的同名键。如果需要保留异常字典里的键值,可以调换合并顺序:先复制外层字段,再更新异常字段。
  • 代码里用了iteritems(),这是Python 2.x中遍历字典键值对的高效方法,Python 2.6完全支持。

内容的提问来源于stack exchange,提问作者Rahul Trivedi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:07:56