我只是学习python不久.我尽力表示我的数据看起来更好,就像以前一样.现在我有一些tuple数据类型,如下所示:
('John', '5', 'Coke')
('Mary', '1', 'Pie')
('Jack', '3', 'Milk')
('Mary', '2', 'Water')
('John', '3', 'Coke')
Run Code Online (Sandbox Code Playgroud)
我想知道每个人买了多少件物品.
假设不同的名字是不同的人.
那么我怎么能这样得到如下信息:
John: 8 Coke
Mary: 1 Pie
Mary: 2 Water
Jack: 3 Milk
Run Code Online (Sandbox Code Playgroud)
我不知道我现在怎么办.即使是愚蠢的人也无法想出任何方法.
我建议使用名字和饮料作为关键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))
Run Code Online (Sandbox Code Playgroud)
更新我做了一些简单的测量,并弄清楚了
count[name, drink] += value
Run Code Online (Sandbox Code Playgroud)
不仅更具可读性,而且比呼叫更快update,这不应该是一个惊喜.此外,defaultdict(int)甚至比那更快(大约两倍)(可能是因为Counter另外执行一些排序.)