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

Reply via email to