【发布时间】:2012-12-06 01:16:20
【问题描述】:
在尝试从 Python 2.x 中的 SQLite3 查询生成dicts 列表时,我可以执行以下操作:
import sqlite3
cur = sqlite3.connect('filename.db').cursor()
query = cur.execute('SELECT * FROM A_TABLE')
colname = [ d[0] for d in query.description ]
result_list = []
for r in query.fetchall():
row = {}
for i in range(len(colname)):
row[colname[i]] = r[i]
result_list.append(row)
del row
cur.close()
cur.connection.close()
print result_list
通过这个,我尝试获取一个字典列表,每个键值对指示列名和为行分配的值。
但是,尽管有效并且可以合理理解,但嵌套的 for 循环让我认为可能有一个 Python 习惯用法可以简化这一点——特别是对理解的一些巧妙使用。我怀疑可能会求助于生成器,但我仍然不太了解如何使用它们。所以我问:有没有办法通过对生成器和/或字典的理解来“压缩”代码并获得预期的字典列表?
【问题讨论】:
-
问题中的代码正是我想要的。只是想说谢谢你发布它,因为它帮助了我很多!
标签: python dictionary sqlite generator list-comprehension