如何将数据库查询返回的列表转换为键为名称值为价格的字典?
解决方案:将数据库查询结果转为商品名-价格字典
嘿,这事儿其实超简单!Python 本身就提供了非常便捷的方式来把你的数据库查询结果转换成想要的字典格式,我给你两种常用方法:
方法1:直接使用dict()构造函数
你的fetchall()返回的是一个包含(name, price)二元组的列表,而 Python 的dict()函数可以直接接收这种键值对组成的可迭代对象,一步到位转成字典。修改你的代码如下:
def get_items_dict(): cur.execute("SELECT name, price FROM items") # 直接把fetchall()的结果传给dict()完成转换 return dict(cur.fetchall())
调用这个函数后,就能得到你想要的格式:{'mobile': 100.80,'projecter': 450.45,'canon': 350.65}
方法2:字典推导式(更灵活)
如果之后你需要对商品名或价格做一些额外处理(比如价格格式化、过滤特定商品),字典推导式会更适合。基础用法如下:
def get_items_dict(): cur.execute("SELECT name, price FROM items") # 遍历查询结果,逐个构建键值对 return {name: price for name, price in cur.fetchall()}
举个额外处理的例子,如果数据库里的价格是字符串类型,你可以在这里直接转成浮点数:
return {name: float(price) for name, price in cur.fetchall()}
注意事项
- 确保数据库的
name字段是唯一的!如果存在重复的商品名,后面的记录会覆盖前面的,导致数据丢失。如果有重复场景,你可能需要调整逻辑,比如把价格存为列表:{name: [price1, price2, ...]}。 - 确认
price字段在数据库中是数值类型(比如DECIMAL、FLOAT),这样返回的字典里价格就是数值,方便后续计算。
内容的提问来源于stack exchange,提问作者mohamed abdallah
相关产品推荐
相关产品推荐

