代码之家  ›  专栏  ›  技术社区  ›  cookiemonster

在基于键的嵌套字典列表中获得平均值的好方法是什么?

  •  1
  • cookiemonster  · 技术社区  · 4 年前

    在基于键的嵌套字典列表中获得平均值的好方法是什么?

    e、 g.鉴于:

    [{'level1_1':{'level2_1': 1, 'level2_2': 2}, 'level1_2':{'level2_3': 3, 'level2_4': 4}}, 
    {'level1_1':{'level2_1': 10, 'level2_2': 20}, 'level1_2':{'level2_3': 30, 'level2_4': 40}}]  
    

    我希望得到:

    {'level1_1':{'level2_1': 5.5, 'level2_2': 11}, 'level1_2':{'level2_3': 16.5, 'level2_4': 22}}
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   BrokenBenchmark Miles Budnek    4 年前

    可以使用两个字典理解(字典的每一层一个)和一个生成器理解(对列表中每个内键的所有元素求和)。注意,这种方法假设每个元素的模式都是相同的:

    data = [{'level1_1':{'level2_1': 1, 'level2_2': 2}, 'level1_2':{'level2_3': 3, 'level2_4': 4}}, 
    {'level1_1':{'level2_1': 10, 'level2_2': 20}, 'level1_2':{'level2_3': 30, 'level2_4': 40}}]
    
    result = {
        key: {
            inner_key: sum(entry[key][inner_key] for entry in data) / len(data) 
            for inner_key in value
        }
        for key, value in data[0].items()
    }
    print(result)
    

    输出:

    {'level1_1': {'level2_1': 5.5, 'level2_2': 11.0}, 'level1_2': {'level2_3': 16.5, 'level2_4': 22.0}}