Creating dynamically named lists/dictionaries

Roy Smith roy at panix.com
Wed Apr 23 19:38:22 EDT 2003


"Rogue 9" <rogue9 at ntlworld.com> wrote:
> Now what I've ended up with is a list containing one draw result
> for each week (768 at the last count)as individual items in that list e.g
> list =[[767,11,22,33,44,45,46]......[1,20,33,41,45,46,47]]

So far, this seems pretty reasonable.

> What I really want is a list or dictionary for each individual weeks
> result but I can't seem to work out how to dynamically create a list or
> dict with a unique name for each week.

The right way to think of both lists and dictionaries is that they are 
maps.  Not maps in the www.mapquest.com sense, but maps in the 
mathematical sense.  For example, let's say we were talking about the 
suits in a deck of cards.  I could make a list of them:

suits = ['clubs', 'diamonds', 'hearts', 'spades']

and now I can talk about mapping the integers 0, 1, 2, and 3 to the suit 
names 'clubs', 'diamonds', 'hearts', and 'spades'.  I give you a key, 
and you can give me back a value.

The difference between lists and dictionaries is that the keys in lists 
are restricted to be integers, while the keys in dictionaries can be 
either integers or strings (or other things, but for the sake of this 
discussion, integers and strings are all we need to worry about).

I don't know what you want to do with the data, but the list of lists 
you've already got seems like a pretty reasonable data structure to me.  
The keys seem like they should be integers, since you're talking about 
week #1, week #2, and so on.  You can already map weeks to winning 
numbers.  If I said, "what were the numbers for week 17?", you would 
just have to get list[17] (keeping in mind that lists are indexed 
starting from 0; so you might really want to get list[16]).

What is it that you want to do with the data that make you think you 
want anything more complex than what you've got?  You are right that 
creating hundreds of individually named lists or dictionaries would be a 
problem, but it's almost certainly not what you want to do.




More information about the Python-list mailing list