Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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 prettytable按多列排序_Python_Sorting_Prettytable - Fatal编程技术网

Python prettytable按多列排序

Python prettytable按多列排序,python,sorting,prettytable,Python,Sorting,Prettytable,我正在使用PrettyTable以一种漂亮的表格格式将数据打印到终端。 按单列顺序打印很容易 from prettytable import PrettyTable table = PrettyTable(["Name", "Grade"]) table.add_row(["Joe", 90]) table.add_row(["Sally", 100]) print table.get_string(sortby="Grade", reversesort=True) >> Tab

我正在使用PrettyTable以一种漂亮的表格格式将数据打印到终端。 按单列顺序打印很容易

from prettytable import PrettyTable

table = PrettyTable(["Name", "Grade"])
table.add_row(["Joe", 90])
table.add_row(["Sally", 100])
print table.get_string(sortby="Grade", reversesort=True)

>> Table with Sally on top, because her score is highest.
我的问题是我想在两列上排序。在这个代理案例中,我想按等级打印,如果有平局,则按字母顺序打印

table = PrettyTable(["Name", "Grade"])
table.add_row(["Joe", 90])
table.add_row(["Sally", 100])
table.add_row(["Bill", 90])
print table.get_string(sortby=("Grade","Name"), reversesort=True)

>> Doesn't work
文档中说sort_键允许我编写一个函数来完成这项工作,但我还没有看到一个实际的实现。

您可以作为
sort_键
值调用。请注意,仍然需要为要应用的
排序键提供
sortby

import operator
from prettytable import PrettyTable


table = PrettyTable(["Name", "Grade"])
table.add_row(["Joe", 90])
table.add_row(["Sally", 100])
table.add_row(["Bill", 90])
table.add_row(["Alice", 90])
print table.get_string(sort_key=operator.itemgetter(1, 0), sortby="Grade")
印刷品:

+-------+-------+
|  Name | Grade |
+-------+-------+
| Alice |   90  |
|  Bill |   90  |
|  Joe  |   90  |
| Sally |  100  |
+-------+-------+

关于如何对一列应用reversesort有什么想法吗?例如,Sally、Alice、Bill、Joe,因为我已经反转了成绩栏。嘿@alecxe谢谢你的回答,这也对我的情况有帮助,只是想知道如何按降序排列“成绩”,我尝试了所有类似(0,1)(1,1)的组合,但它们似乎都没有work@AhsanNaseem使用
reverse=True
arg