Python 2.x で SQLite3 クエリから s のリストを生成しようとすると、dict
次のようなことができます。
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 のイディオム、具体的には内包表記の巧妙な使用法があるのではないかと考えさせられます。ジェネレーターに頼ることができるのではないかと思いますが、まだ使い方がよくわかりません。だから私は尋ねます:コードを「コンパクト化」し、ジェネレーターやディクテーションの理解を使用して目的の辞書のリストを取得する方法はありますか?