SQL TOP 1模拟Python中的列表

时间:2009-05-04 18:59:51

标签: python tsql

以下是我输入csv文件的示例:

...
0.7,0.5,0.35,14.4,0.521838919218

0.7,0.5,0.35,14.4,0.521893472678

0.7,0.5,0.35,14.4,0.521948026139

0.7,0.5,0.35,14.4,0.522002579599
...

我需要选择最后一个浮点数>的顶行。随机数。我当前的实现非常慢(脚本有很多迭代的这个和外部循环):

for line in foo:
   if float(line[-1]) > random.random():
      res = line
      break
...

如何让这更好更快?

编辑:

我被建议使用bisect来完成这项任务,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:3)

最快的方法是使用bisect(假设浮动列表是有序的)。你可以这样做:

import bisect

float_list = [line[-1] for line in foo]
index = bisect.bisect(float_list, random.random())
if index < len(float_list)
    result = foo[index]
else:
    result = None # None exists

必须订购浮动列表才能使其生效。

答案 1 :(得分:1)

如果import the CSV file into SQLite,您实际上可以使用适当的SQL命令。 Python有一个built-in sqlite library可用于查询数据库。