解决方案
使用collections.Counter:from collections import Counter
original_list = [['a', 1], ['b', 1], ['a', 1], ['b', 1], ['b', 2], ['c', 2], ['b', 3]]
result = Counter()
for k, v in original_list:
result.update({k:v})
map(list, result.items())
# [['a', 2], ['c', 2], ['b', 7]]
调查结果
所以,很多答案,观点和赞成票。我甚至白手起家(在过去的两天里,我做出了许多值得更多研究和努力的答案)。鉴于此,我决定至少用从头开始编写的simple script来做一些研究和测试解决方案的性能。不要为了大小而直接在应答中包含代码。
每个函数都是根据其作者命名的,很容易在问题中找到。thefourtheye的解现在等于Mark Reed的一个,并以原始形式计算,即基于itertools.groupby的解的第二个状态。
每一个都进行了多次测试(示例),每个示例依次调用几个函数迭代。我评估了样品时间的最小、最大和标准偏差。
我们开始,进行10次探测测试。testing: thefourtheye, kroolik2, void, kroolik, alko, reed, visser
10 samples
10 iterations each
author min avg max