# [portland] Still Having List/Tuple Problems

Dylan Reinhardt python at dylanreinhardt.com
Thu Apr 17 01:20:44 CEST 2008

```Oh cool!

Pretty soon Python will have a built-in object for *every* useful algo
I've ever learned.  :-)

D.

On Wed, Apr 16, 2008 at 3:08 PM, Matt McCredie <mccredie at gmail.com> wrote:
>
> On Wed, Apr 16, 2008 at 1:48 PM, Dylan Reinhardt
>  <python at dylanreinhardt.com> wrote:
>  > Another approach to add to the pile:
>  >
>  >  >>> my_tuples = [('A',1),('A',2), ('A',3), ('A',4), ('B',1), ('B',2),
>  >  ('B',3), ('B',4)]
>  >  >>> grouper = {}
>  >  >>> for left, right in my_tuples:
>  >  ...         grouper.setdefault(left, []).append(right)
>  >  ...
>  >
>  >  now you have a dict with values groped by keys, as shown below...
>  >
>  >  >>> for key in grouper.keys():
>  >  ...        print key
>  >  ...        for value in grouper[key]:
>  >  ...             print '\t%s' % value
>  >  ...
>  >  A
>  >         1
>  >         2
>  >         3
>  >         4
>  >  B
>  >         1
>  >         2
>  >         3
>  >         4
>  >
>  >
>  >  HTH,
>  >
>  >  Dylan
>  >
>
>  Just to append to Dylan's response, you can get something similar with
>  `defaultdict`.
>
>  >>> from collections import defaultdict
>
> >>> my_tuples = [('A',1),('A',2), ('A',3), ('A',4), ('B',1), ('B',2),
>  ('B',3), ('B',4)]
>  >>> grouper = defaultdict(list)
>
> >>> for left, right in my_tuples:
>  ...     grouper[left].append(right)
>  ...
>
>  The rest remains the same.
>
>  Info on defaultdict: http://docs.python.org/lib/defaultdict-objects.html
>
>  Matt
>
>
> _______________________________________________
>  Portland mailing list
>  Portland at python.org
>  http://mail.python.org/mailman/listinfo/portland
>
```