我只是学习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/