对表中的列(列表列表)进行排序,同时保留行的对应关系

xun*_*xun 4 python sorting list

例如:

list1 = ['c', 'b', 'a']
list2 = [3, 2, 1]
list3 = ['11', '10', '01']
table = [list1, list2, list3]
Run Code Online (Sandbox Code Playgroud)

我想对第一列(list1)进行排序,但是我希望最后的排序仍然保留行(所以在排序后我仍然有一行'b',2,'10') .在这个例子中,我可以单独对每个列表进行排序,但是使用我的数据我不能这样做.什么是pythonic方法?

sen*_*rle 6

一种快捷的方法是使用zip:

>>> from operator import itemgetter
>>> transpose = zip(*table)
>>> transpose.sort(key=itemgetter(0))
>>> table = zip(*transpose)
>>> table
[('a', 'b', 'c'), (1, 2, 3), ('01', '10', '11')]
Run Code Online (Sandbox Code Playgroud)

  • 在[FMc]上稍微重复一下(http://stackoverflow.com/questions/6542399/sorting-columns-in-a-table-list-of-lists-whilst-preserving-the-correspondence-o/6542819#6542819)使用`sorted`,这里是上面的一行:`table = zip(*sorted(zip(*table),key = itemgetter(0)))`. (2认同)