6

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

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 来完成,但我真的不知道该怎么做。谢谢,我觉得这应该很容易。

4

3 回答 3

5

你需要迭代CombinedDict.items()或者CombinedDict.iteritems()如果你想解压到key, values

于 2012-12-02T22:21:49.717 回答
0

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

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

对于迭代字典,您应该使用items(), keys(), and values()(或它们iter*在 python 2.x 中的等价物)

于 2012-12-02T22:23:20.913 回答
0
    python 3.2

    >>> [(i,sum(v)//len(v)) for i,v in t.items()]
于 2012-12-04T17:05:34.840 回答