簡體   English   中英

使用字典的手段創建新的字典

[英]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()}

但這是行不通的。

我知道您專門要求字典/列表理解,但是我不確定僅使用那些工具就能有效地解決此問題。

我認為以下代碼清晰明了:

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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM