[Tutor] extracting lists from lists of lists

Kent Johnson kent_johnson at skillsoft.com
Tue Sep 14 15:12:15 CEST 2004


At 12:52 PM 9/14/2004 +0200, nik wrote:
>hi,
>
>I have a class which is just a holder for a data structure, and for some 
>reason I've decided to hold the data in the following form;
>
>class myData:
>    data = [  ["name", ""], ["age", ""], ["gender", ""] ]
>
>I'm not totally sure it's the best way, but it strikes me as something 
>that can be easily manipulated into maps etc. I had started out with
>class myData:
>    name = ""
>    age = ""
>    gender = ""
>
>but I found that I had to put most of those items into lists to do 
>anything with them.

What kinds of things are you doing that you need these values in a list? It 
sounds like maybe you are trying to pull the data out of the class to pass 
to another function, but maybe it would be better to pass the class itself 
around? Or maybe you should get rid of the class entirely and just use a 
dictionary.

>So apart from any advice on holding data like that, I was wondering if 
>there's any cool way to get the values into a tuple?
>
>ie [  ["name", "john"], ["age", "88"], ["gender", "M"] ]   -> ("john", 
>"88", "M")

List comprehension to the rescue!
 >>> tuple( [ item[1] for item in [  ["name", "john"], ["age", "88"], 
["gender", "M"] ] ] )
('john', '88', 'M')

>I can use a for loop probably, but I've seen people do some very clever 
>stuff with slicing and multiple assignment (which I'm still getting to 
>grips with, but loving). Any suggestions?
>
>Suggestions for holding the data differently initially are welcome too 
>(I'd like the data to be obvious to users that they shouldn't change the 
>names, but be able to easily add/change/manipulate the values).

A class is good for that.

Kent


>thanks,
>nik
>
>_______________________________________________
>Tutor maillist  -  Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor



More information about the Tutor mailing list