[Baypiggies] Fwd: nested list help

Vikram K kpguy1975 at gmail.com
Tue Jul 27 18:59:16 CEST 2010


I received two emails from list members which the member did not cc to the
mailing list. I've sent my thanks separately, but here is what i was sent:

Method 1:
mylist = [['NM100', 3, 4, 5, 6, 7], ['NM100', 10, 11, 12, 13], ['NM200', 15,
16, 17]]

print mylist
print '&&&&&&&&&&&&&&&&'

d= {}
for  i in mylist:
    d.setdefault(i[0],[])
    d[i[0]].extend(i[1:])
-------

Method 2 (similar to method 1 actually):
z = [['NM100', 3, 4, 5, 6, 7], ['NM100', 10, 11, 12, 13], ['NM200', 15, 16,
17]]

print z

print '*******************'

d = dict()

for i in z:
  if i[0] in d:
    d[i[0]].extend(i[1:])
  else:
    d[i[0]] = i[1:]

print d



On Tue, Jul 27, 2010 at 10:20 PM, Zachary Collins <
recursive.cookie.jar at gmail.com> wrote:

> Will this work?
>
> import itertools
> import operator
>
> def magic_function(x):
>    grouped_x = itertools.groupby(sorted(x), lambda l: l[0])
>    return [ [k] + reduce(operator.add, (l[1:] for l in gs)) for k, gs
> in grouped_x ]
>
>
> x = [['NM100', 3, 4, 5, 6, 7], ['NM100', 10, 11, 12, 13], ['NM200', 15, 16,
> 17]]
> print x
> print magic_function(x)
>
>
> On Wed, Jul 28, 2010 at 1:03 AM, Glen Jarvis <glen at glenjarvis.com> wrote:
> > Vikram,
> >     From my experience with your previous posts, you're looking for an
> > elegant and nice solution -- not just an "answer" (and I commend that!)
> >  What I have below is an answer, not an elegant solution.
> > Everyone else,
> >    As a learning experience, I went through Julian's Snitow's suggestion
> on
> > default dicts. What I have works -- however, what is "ugly" to me is
> trying
> > to [].insert without getting a None... I have an ugly secondary outer
> list
> > comprehension to get around that. It feels too hacky to me.
> > I'd be very curious how someone fromt his group makes this better. I'll
> > probably slap myself on the forehead when I see the better solution.
> >
> > from collections import defaultdict
> > x=[['NM100', 3, 4, 5, 6, 7],
> >    ['NM100', 10, 11, 12, 13],
> >    ['NM200', 15, 16, 17]]
> > d=defaultdict(list)
> > for item in x:
> >     d[item[0]].extend(item[1:])
> > z = [ a for a, b in
> >         [(y, y.insert(0, x))
> >             for x, y in d.items() ]]
> > for i in z:
> >     print i
> > lappy_adaptor> python vikram.py
> > ['NM100', 3, 4, 5, 6, 7, 10, 11, 12, 13]
> > ['NM200', 15, 16, 17]
> >
> >
> > On Tue, Jul 27, 2010 at 7:19 AM, Vikram K <kpguy1975 at gmail.com> wrote:
> >>
> >>
> >> ---------- Forwarded message ----------
> >> From: Vikram K <kpguy1975 at gmail.com>
> >> Date: Tue, Jul 27, 2010 at 7:48 PM
> >> Subject: Re: [Baypiggies] nested list help
> >> To: Glen Jarvis <glen at glenjarvis.com>
> >>
> >>
> >> Hi Glen,
> >>  the elements of the original list will never contain a duplicate
> element.
> >> The numbers other than the NMID are actually representing exon
> coordinates
> >> and the joining is being done to represent the fact that exons (or
> rather
> >> exon coordinates) corresponding to the same NMID are joined together to
> >> represent splicing during transcription from DNA to mRNA.
> >>
> >> On Tue, Jul 27, 2010 at 7:31 PM, Glen Jarvis <glen at glenjarvis.com>
> wrote:
> >>>
> >>> To help define the problem, what behavior do you expect if the second
> >>> element of your original list also contains a duplicate element. In
> this
> >>> example, what result are you looking for if your second element was
> >>> ['NM100', 7, 11, 12, 13]
> >>>
> >>> Glen
> >>>
> >>>
> >>>
> >>> > Suppose i have this nested list:
> >>> >
> >>> > >>> x
> >>> > [['NM100', 3, 4, 5, 6, 7], ['NM100', 10, 11, 12, 13], ['NM200', 15,
> 16,
> >>> > 17]]
> >>> > >>> for i in x:
> >>> > ...   print i
> >>> > ...
> >>> > ['NM100', 3, 4, 5, 6, 7]
> >>> > ['NM100', 10, 11, 12, 13]
> >>> > ['NM200', 15, 16, 17]
> >>> > >>>
> >>> >
> >>> > how do i obtain from the above the following nested list:
> >>> >
> >>> > >>> z
> >>> > [['NM100', 3, 4, 5, 6, 7, 10, 11, 12, 13], ['NM200', 15, 16, 17]]
> >>> > >>> for i in z:
> >>> > ...   print i
> >>> > ...
> >>> > ['NM100', 3, 4, 5, 6, 7, 10, 11, 12, 13]
> >>> > ['NM200', 15, 16, 17]
> >>> > >>>
> >>> >
> >>> > _______________________________________________
> >>> > Baypiggies mailing list
> >>> > Baypiggies at python.org
> >>> > To change your subscription options or unsubscribe:
> >>> > http://mail.python.org/mailman/listinfo/baypiggies
> >>
> >>
> >>
> >> _______________________________________________
> >> Baypiggies mailing list
> >> Baypiggies at python.org
> >> To change your subscription options or unsubscribe:
> >> http://mail.python.org/mailman/listinfo/baypiggies
> >
> >
> >
> > --
> > Whatever you can do or imagine, begin it;
> > boldness has beauty, magic, and power in it.
> >
> > -- Goethe
> >
> > _______________________________________________
> > Baypiggies mailing list
> > Baypiggies at python.org
> > To change your subscription options or unsubscribe:
> > http://mail.python.org/mailman/listinfo/baypiggies
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/baypiggies/attachments/20100727/1b64df87/attachment.html>


More information about the Baypiggies mailing list