Меня заинтересовали показатели работы предложенного счетчика, методы уменьшения и суммирования для больших списков.Может быть, кто-то еще заинтересован в этом.Вы можете посмотреть здесь: https://gist.github.com/torstenrudolf/277e98df296f23ff921c
Я проверил три метода для этого списка словарей:
dictList = [{'a': x, 'b': 2*x, 'c': x**2} for x in xrange(10000)]
метод суммирования показал лучшую производительность, за ним последовало уменьшение и счетчиксамый медленный.Время, показанное ниже, указано в секундах.
In [34]: test(dictList)
Out[34]:
{'counter': 0.01955194902420044,
'reduce': 0.006518083095550537,
'sum': 0.0018319153785705566}
Но это зависит от количества элементов в словарях.метод суммирования будет замедляться быстрее, чем уменьшение.
l = [{y: x*y for y in xrange(100)} for x in xrange(10000)]
In [37]: test(l, num=100)
Out[37]:
{'counter': 0.2401433277130127,
'reduce': 0.11110662937164306,
'sum': 0.2256883692741394}