Kitlbast wrote:
On Oct 7, 3:04 am, Raymond Hettinger <pyt...@rcn.com> wrote:
On Oct 6, 4:06 pm, Kitlbast <vlad.shevche...@gmail.com> wrote:





Hi there,
the code below on Python 2.5.2: from itertools import groupby info_list =
    {'profile': 'http://somesite.com/profile1', 'account': 61L},
    {'profile': 'http://somesite.com/profile2', 'account': 64L},
    {'profile': 'http://somesite.com/profile3', 'account': 61L},
]
grouped_by_account =roupby(info_list, lambda x: x['account'])
for acc, iter_info_items in grouped_by_account:
    print 'grouped acc: ', acc
gives output: grouped acc: 61
grouped acc:  64
grouped acc:  61
am I doing something wrong?
Try another variant of groupby() that doesn't require the data to be
sorted:

   http://code.activestate.com/recipes/259173/

Raymond

I've checked few options of groupby() implementations

1. def groupby(_list, key_func):
    res =}
    for i in _list:
        k =ey_func(i)
        if k not in res:
            res[k] =i]
        else:
            res[k].append(i)
    return res


2. def groupby(_list, key_func):
    res =}
    [res.setdefault(key_func(i), []).append(i) for i in _list]
    return res


second one with setdefault works little bit slower then (1), although
it use list comprehension

Or option 3:   use defaultdict


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to