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