Ha, že je v operator i itemgetter jsem zapomněl :-) Pak je to ještě
kompaktnější one-liner.
def summarize(data):
return (
{'a': val, 'b': sum(map(itemgetter('b'), group))}
for (val, group)
in groupby(data, key=itemgetter('a'))
)
Díky za opravu.
H
2013/4/16 Jan
použít
opravdovou tabulku (sqlite) a opravdový SQL dotaz.
Mějte se fajn,
Petr
__
Od: Jan Bednařík jan.bedna...@gmail.com
Komu: Konference PyCZ python@py.cz
Datum: 16.04.2013 00:32
Předmět: Re: [python] Suma podle klice slovniku v
__
Od: Jan Bednařík jan.bedna...@gmail.com
Komu: Konference PyCZ python@py.cz
Datum: 16.04.2013 00:32
Předmět: Re: [python] Suma podle klice slovniku v seznamu
Myslím že to využití groupby je parádní. Je to snadno čitelné
,
Petr
__
Od: Jan Bednařík jan.bedna...@gmail.com
Komu: Konference PyCZ python@py.cz
Datum: 16.04.2013 00:32
Předmět: Re: [python] Suma podle klice slovniku v seznamu
Myslím že to využití groupby je parádní. Je to snadno čitelné
On 16.4.2013 10:04, Petr Přikryl wrote:
O collection.Counter tu byla zmínka, ale řešení neodpovídá požadavku.
P.
A já např. nepochopil požadavek a tak jsem zticha, což ve výsledku znamená,
že je tu méně možných řešení tohoto zapeklitého problému. :)
V.
A já např. nepochopil požadavek a tak jsem zticha, což ve výsledku znamená,
že je tu méně možných řešení tohoto zapeklitého problému. :)
Skus si prebehnut riesenia ostatnych, zadanie bolo vcelku jasne.
azur
___
Python mailing list
Python@py.cz
Ahoj a díky za rozšíření obzorů.
Jsou to data ne zrovna jednoduše vycucaná z databáze, o nějaké dočasné
tabulcev sqlu jsem uvažoval protože je nad tímto selektivně sečteným
výsledkem víc operací, ale připadalo mi to jako ne příliš čisté řešení.
Otrocky s pomocnýma proměnnýma to taky jde, ale
...@seznam.cz
Komu: Konference PyCZ python@py.cz
Datum: 16.04.2013 15:06
Předmět: Re: [python] Suma podle klice slovniku v seznamu
Ahoj a díky za rozšíření obzorů.
Jsou to data ne zrovna jednoduše vycucaná z databáze, o nějaké dočasné
tabulcev sqlu jsem uvažoval protože je nad tímto selektivně
2013/4/16 Jaroslav Lukesh luk...@seznam.cz
Ahoj a díky za rozšíření obzorů.
Jsou to data ne zrovna jednoduše vycucaná z databáze, o nějaké dočasné
tabulcev sqlu jsem uvažoval protože je nad tímto selektivně sečteným
výsledkem víc operací, ale připadalo mi to jako ne příliš čisté řešení.
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:
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
: 15.04.2013 21:59
Predmet: [python] Suma podle klice slovniku v seznamu
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
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,
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
14 matches
Mail list logo