Jde to samozřejmě v podstatě one-linerem, ale bude to nečitelný.
from itertools import groupby def summarize(data): get_b = lambda x: x['b'] get_a = lambda x: x['a'] return ( {'a': val, 'b': sum(map(get_b, group))} for (val, group) in groupby(data, key=get_a) ) data = [{'a': 4, 'b': 3}, {'a': 4, 'b': 5}, {'a': 1, 'b': 3}, {'a': 3, 'b': 2}] print list(summarize(data)) # [{'a': 4, 'b': 8}, {'a': 1, 'b': 3}, {'a': 3, 'b': 2}] Já bych to udělal normálně cyklama, ať se v tom jde vyznat. H 2013/4/15 starenka . <staren...@gmail.com> > Ahoj, dal sem si malyho panaka, abych to pochopil, ale porad nechapu, > pokud by ti nahodou slo o sumu cisel u klicu, tak collections.Counter: > > >>> import collections > >>> c = collections.Counter() > >>> for one in [{'a':4,'b':3},{'a':4,'b':5},{'a':1,'b':3},{'a':3,'b':2}]: > ... c.update(one) > ... > >>> c > Counter({'b': 13, 'a': 12}) > > Ale asi chces neco jinyho, v tom pripade mi to asi lip vysvetli, > protoze jsem z pomalejsich > > s > --- > In Perl you shoot yourself in the foot, but nobody can understand how > you did it. Six months later, neither can you. | print > 'aknerats'[::-1] > > > 2013/4/15 Jaroslav Lukesh <luk...@seznam.cz>: > > Dobrý den, > > > > existuje na toto nějaký jednoduchý fígl? > > > > mám zdroj (první dva slovníky jsou za sebou abyste je nemuseli hledat, > jinak > > jsou rozmístěná všeljak) > > [{'a':4,'b':3},{'a':4,'b':5},{'a':1,'b':3},{'a':3,'b':2}] > > > > a chci ve výsledku sesumírovat všecky b podle stejného klíče a, takto: > > > > [{'a':4,'b':8},{'a':1,'b':3},{'a':3,'b':2}] > > > > hodnota klíče a je obecná, tedy je to text, ne číslo. > > > > Děkuji, JL. > > _______________________________________________ > > Python mailing list > > Python@py.cz > > http://www.py.cz/mailman/listinfo/python > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python