Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提高环路效率_Python_Python 2.7_Sqlite - Fatal编程技术网

Python 提高环路效率

Python 提高环路效率,python,python-2.7,sqlite,Python,Python 2.7,Sqlite,我从sqlite3数据库中提取了21000行,需要将其放入字典中,然后将字典附加到数组中。这个循环目前大约需要1.531秒,我正在尽可能地减少它。我可以用什么更快的方法来做这件事?(我正在使用python 2.7.3) 有没有办法直接将游标输出映射到具有自定义键的词典列表 是否有一种更具python风格的方法可以加快它的速度?将连接保留为SQLite,而使用,这将为您提供一个既可以用作元组又可以用作字典的对象 使用列别名将查询命名为键: cursor.execute(''' SELECT

我从sqlite3数据库中提取了21000行,需要将其放入字典中,然后将字典附加到数组中。这个循环目前大约需要1.531秒,我正在尽可能地减少它。我可以用什么更快的方法来做这件事?(我正在使用python 2.7.3)

有没有办法直接将游标输出映射到具有自定义键的词典列表


是否有一种更具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)