我需要使用这本字典 {'1': 9, '2': 5} (或类似的字典),并将所有键替换为数据库中各自的名称。
我能够从数据库中获取适当的名称并将它们作为字典条目放入列表中。但现在我有点麻烦了 - 第一个字典需要将它们的键替换为我从数据库创建的名称列表中的键(这一直给我错误)。我个人能想到的唯一其他解决方案是找到一种方法来获取数据库名称并将它们直接放入字典中而不是空白列表中,但我不知道如何使用循环来做到这一点。 p>
empty_list = [] **# stores it as [{"name": name1}, {"name":, name2},...]**
for x in range(0, len(dict_key_array)):
data = {
"itm_num": dict_key_array[x]
}
mysql = connectToMySQL("app_database")
query = "SELECT name, price FROM items WHERE items.id = %(itm_num)s;"
pre_empty_list = mysql.query_db(query, data)
empty_list.append(pre_empty_list)
<小时/>
到目前为止,我已经尝试过此操作,以便让这些名称在原始字典中占据各自的位置:
for k in order_data.keys(): **# go through each key of dictionary**
for x in range(0, len(order_data)): **# create a counter(? I think this would lead to duplicates, but I don't know how to avoid this)**
neym = empty_list[x]['name'] **# template debugger says: "TypeError: list indices must be integers or slices, not str"**
order_data[neym] = order_data[k]
del order_data[k]
我需要获取 {'1': 9, '2': 5} 的原始字典(或类似的字典,因为这是基于订单页面,不同的订单将具有不同的键和值)才能显示例如 {'pasta': 9, 'soda': 5},其中 'pasta' 和 'soda' 是在数据库中找到的名称。
最佳答案
我不确定是否全部正确,但可能是
# --- get names ---
mysql = connectToMySQL("app_database")
query = "SELECT name, price FROM items WHERE items.id = %(itm_num)s;"
empty_list = [] # **stores it as [{"name": name1}, {"name":, name2},...]**
for item in dict_key_array:
result = mysql.query_db(query, {"itm_num": item})
empty_list.append(result)
# --- convert keys in order ---
order_data = {'1': 9, '2': 5}
for key in order_data:
index = int(key)-1 # convert str to int # key has value 1,2,3,... but list use 0,1,2,...
name = empty_list[index]['name']
order_data[name] = order_data.pop(key)
#del order_data[key] # .pop() will remove it
但也许你应该将 name
与 itm_num
保留为字典 {itm_num1: {'name": name1}, itm_num2: {"name": name2} }
甚至 {itm_num1: name1, itm_num2: name2}
# --- get names ---
mysql = connectToMySQL("app_database")
query = "SELECT name, price FROM items WHERE items.id = %(itm_num)s;"
empty_dict = dict() # **stores it as {itm_num1: {'name": name1}, itm_num2: {"name": name2} }**
for item_num in dict_key_array:
empty_dict[item_num] = mysql.query_db(query, {"itm_num": item_num})
# --- convert keys in order ---
order_data = {'1': 9, '2': 5}
for key in order_data:
name = empty_dict[key]['name']
order_data[name] = order_data.pop(key)
#del order_data[key] # .pop() will remove it
也许您甚至可以在一个查询中获取它“从商品中选择 ID、名称、价格”
result = mysql.query_db("SELECT id, name, price FROM items")
for row in result:
empty_dict[row['id']] = row
但它将获取数据库的所有行。但是您可以从数据库中获取一次并以不同的顺序始终使用 empty_dict
。
关于python - 用字典列表中找到的名称替换字典中的键 PYTHON-FLASK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57262338/