Python 提高环路效率
我从sqlite3数据库中提取了21000行,需要将其放入字典中,然后将字典附加到数组中。这个循环目前大约需要1.531秒,我正在尽可能地减少它。我可以用什么更快的方法来做这件事?(我正在使用python 2.7.3) 有没有办法直接将游标输出映射到具有自定义键的词典列表Python 提高环路效率,python,python-2.7,sqlite,Python,Python 2.7,Sqlite,我从sqlite3数据库中提取了21000行,需要将其放入字典中,然后将字典附加到数组中。这个循环目前大约需要1.531秒,我正在尽可能地减少它。我可以用什么更快的方法来做这件事?(我正在使用python 2.7.3) 有没有办法直接将游标输出映射到具有自定义键的词典列表 是否有一种更具python风格的方法可以加快它的速度?将连接保留为SQLite,而使用,这将为您提供一个既可以用作元组又可以用作字典的对象 使用列别名将查询命名为键: cursor.execute(''' SELECT
是否有一种更具python风格的方法可以加快它的速度?将连接保留为SQLite,而使用,这将为您提供一个既可以用作元组又可以用作字典的对象 使用列别名将查询命名为键:
cursor.execute('''
SELECT
col3 as aaa, col9 as bbb,
col6 || ' (' || col5 || ')' as hhh,
col9 || ' ? ' || col10 as jjj
FROM SOME_TABLE
''')
然后简单地使用这个结果,而不是建立一个新的列表。如果必须列出这些内容,您可以使用:
array = cursor.fetchall()
或
但是,由于您需要访问行,因此可能最好对结果进行迭代。让您的SQL查询执行字符串连接,并为每个列指定一个名称。然后使用一个游标,从中为每一行生成一个字典,然后您所要做的就是
array=list(游标)
。不追加,而是预先分配数组并填充它,从而保存中间阶段2的不必要创建/销毁。删除dict
并使用其他内容(即使是简单的list
)faster@NikosM.当前位置字典不是这里慢的东西;它甚至使用了文字语法。@MartijnPieters,当然可以,但是其他东西(没有哈希映射)应该更快,例如列表很酷,我会尝试一下这些建议,谢谢!
array = cursor.fetchall()
array = list(cursor)