python級別 python 多級別排序

2021-10-11 00:05:48 字數 1225 閱讀 6699

假如你有這樣一組資料 [[41, 89, 24], [41, 63, 30], [41, 81, 96]],你希望能將這組資料這樣排序:先按第一列從大到小排序,然後再按第二列從大到小排序,最後再第三列從大到小排序,如何 python 實現?

我們可以使用 python 的 sort 一行實現:

n = int(input())

s =

for _ in range(n):

x = input().split(' ')

s.sort(key=lambda x: (int(x[0]), int(x[1]), int(x[2])), reverse=true)

print(s)

上面**將輸出結果:

[('41', '89', '24'), ('41', '81', '96'), ('41', '63', '30')]

但如果你想第一列從大到小排序,第二列從小到大排序呢?其實只需要這樣做:

n = int(input())

s =

for _ in range(n):

x = input().split(' ')

s.sort(key=lambda x: (int(x[0]), -int(x[1]), int(x[2])), reverse=true)

print(s)

這裡第二列所有數都加了負號來使其第二列按從小到大排序。

輸出結果:

[('41', '63', '30'), ('41', '81', '96'), ('41', '89', '24')]

那如果某一列是字串呢?可以這樣做:

n = int(input())

s =

for _ in range(n):

x = input().split(' ')

s.sort(key=lambda x: (x[1], x[2], x[3], [-ord(_) for _ in x[0]]), reverse=true)

print(s)

這裡的意思是後三列按從大到小排序,如果無法做比較,則按第一列的字典序從小到大排序。

我們輸入:

h 41 89 24

a 41 89 24

k 41 89 24

則上面**將輸出:

[('a', '41', '89', '24'), ('h', '41', '89', '24'), ('k', '41', '89', '24')]

參考:

python多列排序 python多列排序

python的sort 和sorted 函式可以進行多列排序。在乙個文字或者列表有多列時,這是乙個很好用的技巧。首先,看一下待排序的資料 這是乙個csv檔案,它有6列,我們需要首先對第一列排序,再對第六列排序 46896961,192100485,1,95wf5sm,1863,2014 12 18 ...

python 多環境多版本

conda 管理 python 環境 管理 python 環境下的 python 包 conda version 以 update 命令為例,檢視 conda 命令幫助 conda update helpconda update conda 基於安裝 conda 時的 python 版本 建立乙個名...

python 函式多引數

分類 python學習筆記 2013 07 20 20 32 101人閱讀收藏 舉報 python 引數傳遞 任意引數 如果用過c語言中的printf 函式,那麼就會對引數傳遞個數可變的意義比較了解了。儘管可選引數的機制令函式的引數個數是可變的,但還是有限制的,引數個數有最大的限制,而且還要指明哪些...