0

の辞書からの手段を用いて新しい辞書を作成します。私のような辞書持っ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()} 

しかし、これは動作しません。

答えて

2

あなたは具体的に辞書/リストの理解を求められていることは知っていますが、これらのツールだけで効率的にこの問題を解決することはできません。

私は以下のコードは、明確かつ合理的に簡潔であると思う:

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} 
+0

はそれを私にビート! +1 –

関連する問題