On Jan 22, 7:58 pm, <[EMAIL PROTECTED]> wrote: > I'm still learning Python and was wanting to get some thoughts on this. I > apologize if this sounds ridiculous... I'm mainly asking it to gain some > knowledge of what works better. The main question I have is if I had a lot > of lists to choose from, what's the best way to write the code so I'm not > wasting a lot of memory? I've attempted to list a few examples below to > hopefully be a little clearer about my question. > > Lets say I was going to be pulling different data, depending on what the user > entered. I was thinking I could create a function which contained various > functions inside: > > def albumInfo(theBand): > def Rush(): > return ['Rush', 'Fly By Night', 'Caress of Steel', '2112', 'A > Farewell to Kings', 'Hemispheres'] > > def Enchant(): > return ['A Blueprint of the World', 'Wounded', 'Time Lost'] > > ... > > The only problem with the code above though is that I don't know how to call > it, especially since if the user is entering a string, how would I convert > that string into a function name? For example, if the user entered 'Rush', > how would I call the appropriate function --> albumInfo(Rush()) > > But if I could somehow make that code work, is it a good way to do it? I'm > assuming if the user entered 'Rush' that only the list in the Rush() function > would be stored, ignoring the other functions inside the albumInfo() function? > > I then thought maybe just using a simple if/else statement might work like so: > > def albumInfo(theBand): > if theBand == 'Rush': > return ['Rush', 'Fly By Night', 'Caress of Steel', '2112', 'A > Farewell to Kings', 'Hemispheres'] > elif theBand == 'Enchant': > return ['A Blueprint of the World', 'Wounded', 'Time Lost'] > ... > > Does anyone think this would be more efficient? > > I'm not familiar with how 'classes' work yet (still reading through my 'Core > Python' book) but was curious if using a 'class' would be better suited for > something like this? Since the user could possibly choose from 100 or more > choices, I'd like to come up with something that's efficient as well as easy > to read in the code. If anyone has time I'd love to hear your thoughts. > > Thanks. > > Jay
What you want is a dictionary: albumInfo = { 'Rush': 'Rush', 'Fly By Night', 'Caress of Steel', '2112', 'A Farewell to Kings', 'Hemispheres'], 'Enchant': ['A Blueprint of the World', 'Wounded', 'Time Lost'], ... } then to find the info just do: >>> albumInfo['Enchant'] ['A Blueprint of the World', 'Wounded', 'Time Lost'] It also makes it easy to add a new album on the fly: >>> albumInfo["Lark's tongue in Aspic"] = [ ... ] Hope that helps. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list