[Baypiggies] Fwd: nested list help

Glen Jarvis glen at glenjarvis.com
Tue Jul 27 18:03:05 CEST 2010


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/baypiggies/attachments/20100727/2e11d283/attachment.html>


More information about the Baypiggies mailing list