我只是学习python了很长时间。我尽了最大的努力来代表我的数据看起来更好,就像之前展示的一样。
现在,我有一些元数据类型,如下所示:

('John', '5', 'Coke')
('Mary', '1', 'Pie')
('Jack', '3', 'Milk')
('Mary', '2', 'Water')
('John', '3', 'Coke')


我想算一下每个人买了多少东西。

假设不同的名字是不同的人。

因此,我该怎么做才能获得以下一些信息:

 John: 8 Coke
 Mary: 1 Pie
 Mary: 2 Water
 Jack: 3 Milk


我不知道该怎么办。我什至无法提出任何方法,即使是愚蠢的方法。

最佳答案

我建议使用名称和饮料作为collections.Counter的键:

from collections import Counter
count = Counter()
for name, amount, drink in tuples:
    key = name, drink
    count.update({key: int(amount)})  # increment the value

# represent the aggregated data
for (name, drink), amount in count.items():
    print('{}: {} {}'.format(name, amount, drink))


更新我做了一些简单的测量,发现

count[name, drink] += value


与调用update相比,它不仅更具可读性,而且速度更快,这不足为奇。而且,defaultdict(int)甚至比它快(大约两倍)(大概是因为Counter还要执行一些排序。)

关于python - 如何在python中合并数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34807006/

10-14 16:31
查看更多