这是一个坏主意.您不应该动态创建变量名称,而是使用字典:
variables = {}
for name, colour, shape in Applist:
variables[name + "_n"] = name
variables[name + "_c"] = colour
variables[name + "_s"] = shape
现在将它们作为变量[“Apple_n”]等访问它们.
你真正想要的,也许是一个决定词:
variables = {}
for name, colour, shape in Applist:
variables[name] = {"name": name, "colour": colour, "shape": shape}
print "Apple shape: " + variables["Apple"]["shape"]
或者,甚至可能更好,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
如果您使用了一个namedtuple,则无法更改每个Fruit的变量(即没有设置变量[“Apple”].color to“green”),因此根据预期用途,它可能不是一个好的解决方案.如果您喜欢namedtuple解决方案,但想要更改变量,则可以将其改为完整的Fruit类,可以在上面的代码中用作namedtuple Fruit的替代品.
class Fruit(object):
def __init__(self, name, colour, shape):
self.name = name
self.colour = colour
self.shape = shape