pymysql查询出来的数据在用字典取值时提示unhashable type: 'list'
时间: 2024-03-25 10:39:07 浏览: 15
这个错误是因为尝试使用列表作为字典的键,而列表是不可哈希的类型,无法作为字典的键。可能是在使用 pymysql 查询 MySQL 数据库时,查询结果以列表的形式返回,然后将列表作为字典的键时出现了这个错误。
解决方案是将列表转换为元组,元组是可哈希的类型,可以作为字典的键。可以使用列表推导式和 map 函数将列表中的每个元素转换为元组,然后将其作为字典的键。
例如:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test')
cursor = conn.cursor()
# 执行查询语句
sql = "SELECT name, age FROM user"
cursor.execute(sql)
result = cursor.fetchall()
# 将查询结果转换为字典
data = {tuple(map(str, row)): row for row in result}
# 关闭数据库连接
cursor.close()
conn.close()
```
在这个例子中,使用了列表推导式和 map 函数将查询结果中的每个列表转换为元组,然后将其作为字典的键,最终得到了一个以元组为键,列表为值的字典。注意,这里使用了 map 函数将元素转换为字符串,因为元组中的元素必须是可哈希的类型,而查询结果中的元素可能是任意类型,因此需要将其转换为字符串以确保可哈希性。