如果第一个元素相同,则汇总元组列表中的第二个元素?

时间:2019-01-03 09:21:23

标签: python python-3.x python-2.7 tuples summary

如何总结元组列表中的第二个元素, 如果第一个元素相同?

例如:

在此

lst = [('milk', '2.35'), ('bread', '1.95'), ('chips', '2.54'), 
       ('milk', '2.38'), ('milk', '2.31'), ('bread', '1.90')]

我会一起总结牛奶的第二要素, 一起总结面包的第二要素。

并返回此列表:

[('bread', '3.85'), ('chips', '2.54'), ('milk', '7.04')]

def my_def(a):
    my_list = []
    for item in a:
        if item[0] not in my_list:
            my_list.append(item[0])
    return my_list

我可以找到相同的一个:(

1 个答案:

答案 0 :(得分:2)

您可以使用collections.defaultdict()个浮点数进行总结:

from collections import defaultdict

l = [('milk', '2.35'), ('bread', '1.95'), ('chips', '2.54'), ('milk', '2.38'), ('milk', '2.31'), ('bread', '1.90')]

d = defaultdict(float)
for x, y in l:
    d[x] += float(y)

print([(x, round(y, 2)) for x, y in d.items()])
# [('milk', 7.04), ('bread', 3.85), ('chips', 2.54)]
相关问题