[python] Suma podle klice slovniku v seznamu

2013-04-15 Tema obsahu Jaroslav Lukesh
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:

Re: [python] Suma podle klice slovniku v seznamu

2013-04-15 Tema obsahu starenka .
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

Re: [python] Suma podle klice slovniku v seznamu

2013-04-15 Tema obsahu azurIt
Ahoj, nie som si isty, ci na toto najdes nejaky 'jednoduchy figel'. Proste to prejdi jednym cyklom a hodnoty spocitaj do druheho slovniku. azur __ Od: Jaroslav Lukesh luk...@seznam.cz Komu: Konference PyCZ python@py.cz Dátum:

Re: [python] Suma podle klice slovniku v seznamu

2013-04-15 Tema obsahu Honza Javorek
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,

Re: [python] Suma podle klice slovniku v seznamu

2013-04-15 Tema obsahu Jan Bednařík
Myslím že to využití groupby je parádní. Je to snadno čitelné, jednoduché a elegantní řešení. Těžko to půjde napsat čitelnějí pomocí cyklů. Ostatně právě kvůli tomuto příkladu existuje funkce groupby. Jen bych to lehce vylepšil použitím operator.itemgetter místo těch lambda funkcí, tzn.: from