Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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或jquery for cherrypy页面显示的排序列表_Jquery_Python_Sorting_Tablesorter_Cherrypy - Fatal编程技术网

使用python或jquery for cherrypy页面显示的排序列表

使用python或jquery for cherrypy页面显示的排序列表,jquery,python,sorting,tablesorter,cherrypy,Jquery,Python,Sorting,Tablesorter,Cherrypy,我有一个cherrypy项目,它有一个网页,可以将数据库查询的结果显示为所有行的列表,有时是10000多行。数据库查询返回一个列表,列表中的每一项都是查询中所有列的元组。我想设置某种默认排序顺序,以使我添加的分页更可用。但是,当我测试用python和jquery添加排序时,我发现这两种方法都有局限性,我不确定是我不知道如何克服它们,还是应该使用另一种方法 在python方法中,我使用了sorted()函数和itemgetter操作符,但我发现,在用于排序的列中,混合使用大小写不同的字母和数字,它

我有一个cherrypy项目,它有一个网页,可以将数据库查询的结果显示为所有行的列表,有时是10000多行。数据库查询返回一个列表,列表中的每一项都是查询中所有列的元组。我想设置某种默认排序顺序,以使我添加的分页更可用。但是,当我测试用python和jquery添加排序时,我发现这两种方法都有局限性,我不确定是我不知道如何克服它们,还是应该使用另一种方法

在python方法中,我使用了sorted()函数和itemgetter操作符,但我发现,在用于排序的列中,混合使用大小写不同的字母和数字,它使用的是算术顺序[0、10、2、20、a、C、Z、a、Z]。这种排序顺序并不理想,但我还没有找到一种方法将排序操作为不同的类型。下面是我用来排序的代码示例

from operator import itemgetter
random_list = [('a', 'value'), ('b', 'value'), ('0', 'value'), ('8', 'value'), ('Z', 'value'), ('2', 'value'), ('A', 'value'), ('z', 'value'), ('100', 'value'), ('250', 'value'), ('20', 'value'), ('25', 'value'), ('10', 'value'), ('11', 'value'), ('c', 'value')]
sorted_results = sorted(random_list,key=itemgetter(0))
print sorted_results
[('0', 'value'), ('10', 'value'), ('100', 'value'), ('11', 'value'), ('2', 'value'), ('20', 'value'), ('25', 'value'), ('250', 'value'), ('8', 'value'), ('A', 'value'), ('Z', 'value'), ('a', 'value'), ('b', 'value'), ('c', 'value'), ('z', 'value')]
与我将在下面描述的jquery方法相比,该方法目前完全加载页面所需的时间大约要少6-7秒

对于jquery排序,我一直在尝试TableSorterjQuery插件。我将jquery.tablesorter.js文件包括在我的项目中,并在我的页面上链接到它。这个方法返回字母顺序,而我看到的是类似于[0,a,C,Z,a,Z,2,10,20]的列表顺序,这比我的python方法中的ASCIIbetical要好得多。但是,这种jquery方法确实需要更长的时间来对结果进行排序,并且有一个完全加载的/功能性的页面

下面是我的jquery代码片段,链接到我的html页面,其中的表格将使用
id=“data table”

是否有一种方法可以操作更快的python方法来代替我想要的排序方式,或者是否有一些方法可以优化jquery的工作方式

编辑


评论中的randomir将我指向python的natsort模块,它似乎正是我所寻找的排序类型,比我的jquery方法更快。如果其他人有其他建议,我总是乐于接受优化

的可能重复项似乎就是您要寻找的。它工作正常,因为元组是先按第一项排序,然后按第二项排序的。尝试:
从natsort导入natsorted
natsorted(随机列表)
。你会得到你所需要的一切。@randomir natsort似乎正是我想要的,谢谢你给我指明了正确的方向。如果我试图对一个元组中的第三项或第四项进行排序,以获得更大的结果集,该怎么办?我现在正在查看文档,但我想如果您知道,我会看到,同样地,它接受
参数。因此,您可以使用
natsorted(data,key=itemgetter(3))
。的可能重复项似乎就是您要查找的。它工作正常,因为元组首先按第一项排序,然后按第二项排序。尝试:
从natsort导入natsorted
natsorted(随机列表)
。你会得到你所需要的一切。@randomir natsort似乎正是我想要的,谢谢你给我指明了正确的方向。如果我试图对一个元组中的第三项或第四项进行排序,以获得更大的结果集,该怎么办?我现在正在查看文档,但我想如果您知道,我会看到,同样地,它接受
参数。因此您将使用
natsorted(data,key=itemgetter(3))
$( document ).ready(function() {
    $("#data-table")
    .tablesorter({sortList: [[1,0],[0,0]]});
}