2012-12-02 16 views
6

私はこのような辞書を持っています。 。 。Python - 辞書の複数の値/キーの平均を見つける方法

CombinedDict = {'Abamectin': [63, 31, 53], 'Difenzoquat metilsulfate': [185, 49, 152], 'Chlorpyrifos': [14, 26, 56], 'Dibutyl phthalate': [25, -17, -18] 

など。合計で私は48種類のキーを持っています。

私が得ようとしているのは、3つの数字の平均です。だから私はこのように見えるdictを得るだろう。 。 。

AvgDictName = {'Abamectin': [49], 'Difenzoquat metilsulfate': [128], 'Chlorpyrifos': [32], 'Dibutyl phthalate': [-3] . . . 

私はこのライン

AvgDictName = dict([(key, float(sum([int(i) for i in values]))/len(values)) for key, values in CombinedDict]) 

を使用して試してみました。しかし、私はエラーに 任意のアイデアを展開するあまりにも多くの値を取得していますか?辞書をリストにしてlenとsumコマンドを使ってリストから平均を見つけて辞書に戻すことでも可能だと思いますが、どうやってそれをどうやって進めるのか本当に分かりません。ありがとう、私はこれは簡単に感じる。

答えて

5

あなたは辞書のキーの上にkey, values

+1

' .iteritems() 'inspectorG4dget @ Pythonの2.xの – inspectorG4dget

+1

用を使用する必要があります.items() 'は実際には大きな値のリストを最適化する必要がない限り、Python 3の証明という意味で実際には優れています。 –

+0

@BenHoyt:これは2to3ツールのためのものです。私はカッコ内にすべての印刷ステートメントをラップする必要がありますか? – Eric

0

for x in dictionary: ...繰り返し処理の中に解凍したい場合はCombinedDict.items()CombinedDict.iteritems()を反復する必要があります。

キー自体がタプルでない限り、for a, b in dictionaryはキーを2つの値に解凍しようとするのでエラーとなります。

辞書を反復処理するためには、 `、items()keys()、およびvalues()(やPython 2.xでそのiter*相当)

0
python 3.2 

    >>> [(i,sum(v)//len(v)) for i,v in t.items()] 
関連する問題