Big time WTF with generators - bug?

James Stroud jstroud at mbi.ucla.edu
Wed Feb 13 05:15:20 EST 2008


Paul Rubin wrote:
> Peter Otten <__peter__ at web.de> writes:
>> You are trying to store a group for later consumption here. 
> 
> Good catch, the solution is to turn that loop into a generator,
> but then it has to be consumed very carefully.

Brilliant suggestion. Worked like a charm. Here is the final product:


def dekeyed(serialized, keyfunc):
   for name, series in serialized:
     grouped = groupby(series, keyfunc)
     regrouped = ((k, (v[1] for v in g)) for (k,g) in grouped)
     yield (name, regrouped)

def serialize(table, keyer=_keyer,
                      selector=_selector,
                      keyfunc=_keyfunc,
                      series_keyfunc=_series_keyfunc):
   keyed = izip(imap(keyer, table), table)
   filtered = ifilter(selector, keyed)
   serialized = groupby(filtered, series_keyfunc)
   return dekeyed(serialized, keyfunc)


Thank you!

James



-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com



More information about the Python-list mailing list