Assigning to lists with arbitrary names
Christian Tanzer
tanzer at swing.co.at
Thu Oct 11 02:57:02 EDT 2001
Cliff Wells <logiplexsoftware at earthlink.net> wrote:
> On Wednesday 10 October 2001 09:55, Daniel Dittmar wrote:
> > > Here's the problem: I want to name each list list00 to list99. I don't
> > > want to do list[0] to list[99] (since each list is actually a list of
> > > lists, and I'd like to avoid a list of lists of lists :).
> >
> > You could use a dictionary with keys 'list00' to 'list99', but I don't
> > think having a dictionary of lists of lists is that much better. Why not
> > subclass UserList for each kind of list? Then you could at least
> > distinguish between the different levels.
>
> If you really _must_ have multiple variable names (IMHO a bad idea, since
> later you will have to reference all those lists and hence hardwire those
> names into your code which will make extensiblity murder - I still feel the
> dictionary method I recommended earlier is a simpler and more extensible
> solution) you could use something like:
>
>
> filenames = ["text01.txt", "text02.txt", ....] # use fnmatch or glob to get
> # the filenames in
> # real life
> i = 0
> for filename in filenames:
> listname = "list%02d" % i
> exec("%s = MyImporter('%s')" % (listname, filename))
> i += 1
>
> Which will give you 100 lists with the names list00, list99, etc and a ton of
> maintenence problems.
And it still uses a dictionary (just slightly hidden from your view)
so what's the point of such a gross hack?
I think the OP should consider getting rid of his fear of nested data
structures -- in Python they are your friend.
--
Christian Tanzer tanzer at swing.co.at
Glasauergasse 32 Tel: +43 1 876 62 36
A-1130 Vienna, Austria Fax: +43 1 877 66 92
More information about the Python-list
mailing list