通过可变数量的键对多维列表进行排序

Joe*_*gen 9 python sorting

我已经阅读了这篇文章,并没有结束为我工作.

编辑:我所描述的功能就像Excel中的排序功能一样......如果能让它更清晰

这是我的情况,我有一个制表符分隔的文本文档.每行大约有125,000行和6列(列由制表符分隔).我已将文档拆分为二维列表.

我正在尝试编写一个通用函数来对二维列表进行排序.基本上我想有一个函数,我可以传递大的列表,以及一个或多个列的键,我想排序大列表.显然,我希望第一个键被传递为主要的排序点,然后是第二个键,等等.

仍然困惑?

这是我想做的一个例子.

Joel    18  Orange  1
Anna    17  Blue    2
Ryan    18  Green   3
Luke    16  Blue    1
Katy    13  Pink    5
Tyler   22  Blue    6
Bob     22  Blue    10
Garrett 24  Red 7
Ryan    18  Green   8
Leland  18  Yellow  9
Run Code Online (Sandbox Code Playgroud)

说我把这个列表传递给了我的魔法函数,就像这样:

sortByColumn(bigList, 0)

Anna    17  Blue    2
Bob     22  Blue    10
Garrett 24  Red 7
Joel    18  Orange  1
Katy    13  Pink    5
Leland  18  Yellow  9
Luke    16  Blue    1
Ryan    18  Green   3
Ryan    18  Green   8
Tyler   22  Blue    6
Run Code Online (Sandbox Code Playgroud)

和...

sortByColumn(bigList, 2, 3)

Luke    16  Blue    1
Anna    17  Blue    2
Tyler   22  Blue    6
Bob     22  Blue    10
Ryan    18  Green   3
Ryan    18  Green   8
Joel    18  Orange  1
Katy    13  Pink    5
Garrett 24  Red 7
Leland  18  Yellow  9
Run Code Online (Sandbox Code Playgroud)

有线索吗?

Ten*_*she 11

import operator:
def sortByColumn(bigList, *args)
    bigList.sort(key=operator.itemgetter(*args)) # sorts the list in place
Run Code Online (Sandbox Code Playgroud)

  • 那是Guido的时间机器.http://catb.org/jargon/html/G/Guido.html (2认同)

int*_*jay 8

这将按第2列和第3列排序:

a.sort(key=operator.itemgetter(2,3))
Run Code Online (Sandbox Code Playgroud)