jba*_*sta 2 python sqlite dictionary list-comprehension generator
在尝试dict
从Python 2.x的SQLite3查询生成s 的列表时,我可以执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
这样,我尝试获取字典列表,每个键值对指示列名和行的分配值。
但是尽管工作并且可以合理理解,但嵌套for
循环使我认为可能存在简化这一点的Python习惯用法-特别是对理解的一些巧妙使用。我怀疑也许可以求助于发电机,但是我仍然不太了解如何使用发电机。所以我问:有没有一种方法可以通过对生成器和/或字典的某种理解来“压缩”代码并获得预期的字典列表?
尝试这个:
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 = [ dict(zip(colname, r)) for r in query.fetchall() ]
cur.close()
cur.connection.close()
print result_list
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2130 次 |
最近记录: |