Итак, у меня есть 2D-список и вы хотите отсортировать его, используя второй файл ключей. Кто-нибудь знает, как я буду это делать?Python Сортировка 2D-списка с пользовательским ключом
Вот пример ввода:
And here is an example input file:
first_nm,last_nm,gender,cwid,cred_hrs,qual_pts,gpa
John,Roe,M,44444444,40,150,3.75
Jane,Roe,F,66666666,100,260,2.6
John,Doe,M,22222222,50,140,2.8
Jane,Doe,F,88888888,80,280,3.5
Penny,Lowe,F,55555555,40,140,3.5
Lenny,Lowe,M,11111111,100,280,2.8
Denny,Lowe,M,99999999,80,260,3.25
Benny,Lowe,M,77777777,120,90,0.75
Jenny,Lowe,F,33333333,50,90,1.8
Zoe,Coe,F,0,50,130,2.6
Вот ключи для сортировки (там может быть больше или меньше, в зависимости от того, как вы хотите отсортировать его)
gender,ascend,string
gpa,descend,float
last_nm,ascend,string
И здесь было бы это выход для этого входа и ключей:
first_nm,last_nm,gender,cwid,cred_hrs,qual_pts,gpa
Jane,Doe,F,88888888,80,280,3.5
Penny,Lowe,F,55555555,40,140,3.5
Zoe,Coe,F,00000000,50,130,2.6
Jane,Roe,F,66666666,100,260,2.6
Jenny,Lowe,F,33333333,50,90,1.8
John,Roe,M,44444444,40,150,3.75
Denny,Lowe,M,99999999,80,260,3.25
John,Doe,M,22222222,50,140,2.8
Lenny,Lowe,M,11111111,100,280,2.8
Benny,Lowe,M,77777777,120,90,0.75
Я думал только об использовании встроенного сортировки(), но был n Конечно, если я смогу использовать его, если сортирую 3 раза. Думаю, мне пришлось бы отступить назад? (last_nm, then gpa, then gender)
Я думаю, вы пропустили закрытие кронштейна. –
@ AvinashRaj - Так я и сделал. Исправлена. –
@ncerice: lambda x: (x [2], x [6] * -1, x [1]) '- это функция, которая получает строку вашего 2D-списка и возвращает кортеж, состоящий из элемента 2 строка, элемент 6, умноженная на -1, и элемент 1. 'sort()' использует этот кортеж как ключ для сортировки, а не значение строки. Ключ для каждой строки вычисляется только один раз, хотя ключи необходимо проверять несколько раз для выполнения сортировки, поэтому эта операция преобразования ключей довольно эффективна. –