我有一个项目列表。例如banana
,apple
,orange
等。其中每个都有属性,例如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
之类的变量设置变量名。因此,对于列表中的每个项目,都会创建一个变量。
答案 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
>>>
建议阅读(以及那样做的图书馆):