Python prettytable按多列排序
我正在使用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
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