获取重复并将其整数值相加

时间:2016-03-04 11:18:58

标签: python list-comprehension

我从这里得到一个清单:

items = [[slot['accountLabelType'], slot['totalPrice']] for slot in self.data]

这会产生如下列表:

['Transport', 888]

现在,在此列表中有重复项,我想要做的是识别重复项并对其值求和。我已经读过您可以在collections.Counter的列表中找到重复项,我正在尝试:

c = [y for y in Counter(self.data) if y > 1]

但我收到了错误

TypeError: unhashable type: 'list'

2 个答案:

答案 0 :(得分:2)

您可以使用defaultdict

from collections import defaultdict

c = defaultdict(int)
for slot in self.data:
    c[slot['accountLabelType']] += slot['totalPrice']

答案 1 :(得分:1)

您可以在开头创建一个字典,并在迭代时汇总totalPrice字段:

items = {}
for slot in self.data:
    label = slot['accountLabelType'] 
    price = slot['totalPrice']
    if label in items:
        items[label] += price
    else:
        items[label] = price
print items