刚学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
我现在不知道该怎么办。我想不出任何方法,即使是愚蠢的方法。
请您参考如下方法:
我建议使用 name 和 drink 作为 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 额外执行一些排序。)
