0

I apologise if there are answers to this elsewhere but my programming is very basic and I don't really understand - so please keep it simple and please be patient.

If I have a list of strings. Is there an easy way of creating variables called by the items in the list?

i.e.

list1 = ['A', 'B', 'C', 'D', ... 'X', 'Y', 'Z']
A = 
B = 
C =
.
.
.
Z = 

A prod in the right direction would be appreciated!

2
Contributors
1
Reply
59
Views
3 Years
Discussion Span
Last Post by Gribouillis
1

The answer is yes it is possible to create global variables this way, but it is considered poor programming. Here is this forbidden fruit

globals().update((name, 'foo') for name in list1)

Now all the variables exist, with value the string "foo".

Apart from this bad way to do it there are several good alternatives. The first one is to use a dictionary:

val = dict((name, 'foo') for name in list1)

Then val["A"] has value 'foo'. Another way is to use a class

class val:
    pass

for name in list1: setattr(val, name, 'foo')

Then val.A is 'foo' etc.

One can also use a class instance, often I use

class Static(object):
    def __init__(self, *args, **kwd):
        self.__dict__.update(*args, **kwd)

val = Static((name, 'foo') for name in list1)

val.A = 'bar'
print(val.A)

Edit: bugfix for class Static.

Edited by Gribouillis

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.