Python-如何在字典中查找多个值/键的平均值

时间:2012-12-02 22:19:09

标签: python dictionary average

我有一本看起来像这样的字典。 。 。

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

等等。我总共有48个不同的按键。

我想要的是这三个数字的平均值。所以我会得到一个看起来像这样的字典。 。 。

  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])

但是我得到太多的值来解压错误 有任何想法吗?我认为也可以通过将dict放入列表并使用len和sum命令从列表中查找平均值然后转换回dict但我真的不知道如何去做。谢谢,我觉得这很容易。

3 个答案:

答案 0 :(得分:5)

如果要解压缩到key, values

,您需要迭代CombinedDict.items()CombinedDict.iteritems()

答案 1 :(得分:0)

for x in dictionary: ...遍历字典的键。

除非密钥本身是元组,否则for a, b in dictionary会出错,因为它会尝试将密钥解压缩为两个值。

对于迭代词典,您应该使用items()keys()values()(或python 2.x中的iter*等效词)

答案 2 :(得分:0)

    python 3.2

    >>> [(i,sum(v)//len(v)) for i,v in t.items()]