如何在python中合并数据

Wen*_*enT 1 python merge

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

我不知道我现在怎么办.即使是愚蠢的人也无法想出任何方法.

ber*_*eal 8

我建议使用名字和饮料作为关键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另外执行一些排序.)

  • @Borja我明白了,那是因为`amount`是输入中的字符串.固定,谢谢. (2认同)