Python-как найти среднее значение нескольких значений / ключа в словаре

у меня есть словарь, который выглядит так. . .

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

, но я получаю слишком много значений, чтобы распаковать ошибку Есть идеи? Я думаю, что это также можно сделать, сделав дикт в список и найдя среднее значение из списка с использованием команд LEN и sum, а затем преобразование обратно в dict, но я действительно не знаю, как это сделать. Спасибо, у меня такое чувство, что это должно быть легко.

3 ответов


вам нужно перебрать CombinedDict.items() или CombinedDict.iteritems() если вы хотите распаковать в key, values


for x in dictionary: ... перебирает ключи словаря.

если сами ключи кортежей for a, b in dictionary будет ошибка, так как он пытается распаковать ключ на два значения.

для итерации словарей вы должны использовать items(), keys() и values() (или iter* эквиваленты в python 2.x)


    python 3.2

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