Python为每个项目创建变量

时间:2014-02-04 08:37:00

标签: python variables dynamic

我有一个项目列表。例如bananaappleorange等。其中每个都有属性,例如banana'name': 'banana','color': 'yellow'等。

我要做的是为每个项目创建变量。所以我可以称之为 fruit.banana['color']并获取值yellow

代码示例:

fruits =  cur.fetchall()
for fruittarget in fruits:
    fruit = fruittarget['name']
    cur.execute("SELECT * FROM fruits where name = %s ;",(fruit))
    rows = cur.fetchone()
    name = rows["name"]
    fruitfunc = {name: rows['name']}
    fruitfunc[rows['name']] = {'color': rows['color']}
print fruitfunc[banana]['color']

问题是只适用于每个人的最后一个。 如何制作fruitfunc.banana['color']fruitfunc.potato['color']? 我想用getfruit + name = fruitfunc之类的变量设置变量名。因此,对于列表中的每个项目,都会创建一个变量。

2 个答案:

答案 0 :(得分:1)

fruits = {'banana': {'color': 'yellow'}, 'potato': {'color': 'beige'}}

使用名称作为键。要获得香蕉的颜色,请参阅fruits['banana']['color']

答案 1 :(得分:0)

# this class simulates cur.fetchall and cur.execute
# to stick with your example code

class Database:
    data = [{"name":"banana","color":"yellow"},{"name":"red_apple","color":"red"}]
    def execute(self,ignored,name):
        for element in self.data :
            if element["name"] == name:
                return element
    def fetchall(self):
        return self.data

cur    = Database()
fruits = cur.fetchall()
mydict = {}
for fruit in fruits :
    fruit_name            = fruit["name"]
    fruit_dict            = cur.execute("SELECT * FROM fruits where name = %s ;",fruit_name)
    mydict[fruit["name"]] = fruit_dict

print "---"
print mydict    
print mydict["red_apple"]
print mydict["banana"]["color"]

追踪:

>>> ---
{'red_apple': {'color': 'red', 'name': 'red_apple'}, 'banana': {'color': 'yellow', 'name': 'banana'}}
{'color': 'red', 'name': 'red_apple'}
yellow
>>> 

建议阅读(以及那样做的图书馆):