I\'ve been playing with Python and I have this list that I need worked out. Basically I type a list of games into the multidimensional array and then for each one, it will m
This is a bad idea. You should not dynamically create variable names, use a dictionary instead:
variables = {}
for name, colour, shape in Applist:
variables[name + "_n"] = name
variables[name + "_c"] = colour
variables[name + "_s"] = shape
Now access them as variables["Apple_n"]
, etc.
What you really want though, is perhaps a dict of dicts:
variables = {}
for name, colour, shape in Applist:
variables[name] = {"name": name, "colour": colour, "shape": shape}
print "Apple shape: " + variables["Apple"]["shape"]
Or, perhaps even better, a namedtuple:
from collections import namedtuple
variables = {}
Fruit = namedtuple("Fruit", ["name", "colour", "shape"])
for args in Applist:
fruit = Fruit(*args)
variables[fruit.name] = fruit
print "Apple shape: " + variables["Apple"].shape
You can't change the variables of each Fruit
if you use a namedtuple
though (i.e. no setting variables["Apple"].colour
to "green"
), so it is perhaps not a good solution, depending on the intended usage. If you like the namedtuple
solution but want to change the variables, you can make it a full-blown Fruit
class instead, which can be used as a drop-in replacement for the namedtuple
Fruit
in the above code.
class Fruit(object):
def __init__(self, name, colour, shape):
self.name = name
self.colour = colour
self.shape = shape
It would be easiest to do this with a dictionary:
app_list = [
['Apple', 'red', 'circle'],
['Banana', 'yellow', 'abnormal'],
['Pear', 'green', 'abnormal']
]
app_keys = {}
for sub_list in app_list:
app_keys["%s_n" % sub_list[0]] = sub_list[0]
app_keys["%s_c" % sub_list[0]] = sub_list[1]
app_keys["%s_s" % sub_list[0]] = sub_list[2]