2017-11-16 21 views
-2

私はPython辞書を持っています。最初のキーと値のペアには、さまざまな文字列(さまざまな数値と実際の文字列があります)のリストがあります。Python辞書で非排他的な値の集計合計を計算する

my_dict = [{"var1":['a','b'], 
      "var2": 34}, 
      {"var1":['a','c'], 
      "var2": 2}, 
      {"var1":['c','d','e'], 
      "var2": 17}, 
      {"var1":['b','e'], 
      "var2": 29}, 
      {"var1":['a','d','e'], 
      "var2": 10}, 
      {"var1":['b','d'], 
      "var2": 21}] 

私はvar1キーと値のペアに異なる値のそれぞれの平均値との和を仕事をしたいです。たとえば、値 'a'の場合、合計は34(1番目のアイテム)+ 2(2番目のアイテム)+ 10(5番目のアイテム)= 46、bの場合は34(1番目)+ 29 + 21(6th)= 74。データフレーム内の各値の行が必要です。

私はCountercollectionsから試しましたが、それは請求書に適合しません。

+1

は私達にあなた以外の作業コードを表示します何が間違っていたか教えてください... – Julien

+0

2つの結果の辞書を作成し、辞書を繰り返します。各辞書について、 "var1"のリストを反復する。各リスト項目に対して、結果辞書のキーとして使用し、1つの辞書(sum)に "var2"の値を追加し、もう一方に1を加算します(平均計算のためのカウント)。 'dict.get()'をデフォルト値または 'collections.defaultdict'と一緒に使うと便利です。 –

答えて

1

ここに合計コードがあります。私はあなたに平均コードを行うためにそれを残します。

for item in my_dict: 
    for thing in item['var1']: 
     if thing not in results: 
      results[thing] = 0 
     results[thing] = results[thing] + item['var2'] 

結果{ '':46、 'B':84、 'C':19、 'D':48、 'E':56}あなたならば