用字典的字典创建一个新的字典
Create a new dict with means from a dict of dicts
我有这样的字典:
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()}
但这行不通。
我知道您特别要求 dictionary/list 理解,但我不确定仅使用这些工具是否可以有效地解决此问题。
我认为下面的代码清晰且相当简洁:
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}
我有这样的字典:
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()}
但这行不通。
我知道您特别要求 dictionary/list 理解,但我不确定仅使用这些工具是否可以有效地解决此问题。
我认为下面的代码清晰且相当简洁:
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}