【问题标题】:Create a new dict with means from a dict of dicts使用字典中的手段创建一个新字典
【发布时间】:2016-12-28 07:09:34
【问题描述】:

我有一本像这样的字典:

dict = {'abc':{'a':1,'b':2,'c':3},
'bla':{'a':0,'b':9},
'ind':{'b':3,'c':4}
 }

我想使用列表或字典理解来创建一个新字典,其中包含每个内部键,然后是该内部键的所有值的平均值,例如:

result = {'a':(1+0/2),'b':(2+9+3/3),'c':(3+4/2)}

我该怎么做?我正在尝试使用

import numpy as np

result = {key: np.mean([inner_value for key,inner_value for inner_dict.items() for outer_key,inner_dict in dict.items()]) for key,inner_value for inner_dict.items() for outer_key,inner_dict in dict.items()}

但这不起作用。

【问题讨论】:

    标签: python dictionary list-comprehension mean dictionary-comprehension


    【解决方案1】:

    我知道您特别要求理解字典/列表,但我不确定仅使用这些工具是否可以有效地解决此问题。

    我认为下面的代码清晰且相当简洁:

    from collections import defaultdict
    
    outer = {
        'abc': { 'a': 1, 'b': 2, 'c': 3 },
        'bla': { 'a': 0, 'b': 9},
        'ind': { 'b': 3, 'c': 4},
    }
    
    grouped = defaultdict(list)
    
    for inner in outer.values():
        for key, value in inner.items():
            grouped[key].append(value)
    
    means = { key: sum(values) / len(values)
              for key, values in grouped.items() }
    
    print(means) # {'c': 3.5, 'a': 0.5, 'b': 4.666666666666667}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 2019-03-15
      • 2021-01-15
      • 1970-01-01
      • 2019-01-16
      相关资源
      最近更新 更多