Я начинаю изучать Python 3. Мне интересно, как выполнить пользовательский сортировку. Например, я могу отсортировать список животных следующим образом: сортировать по первому символу по возрастанию, затем по убыванию длины, затем по алфавиту по возрастанию.Custom sort in Python 3
Список, составленный из «муравьев», «антилоп», «зебра», «муравьед» при правильной сортировке, станет «муравьед», «антилопа», «муравей», «зебра».
Я немного почитал документы, но не совсем понимаю аргумент «ключ» для метода сортировки. Любые примеры? PS: это не вопрос о назначении колледжа. Я просто хочу немного поиграть с python.
Я узнал Java долгое, долгое время назад, и, возможно, реализовали пользовательские сортировки что-то вроде следующего:
import java.util.*;
public class sortDemo implements Comparator<String> {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<String>();
animals.add("ant");
animals.add("antelope");
animals.add("zebra");
animals.add("anteater");
for (String a:animals){
System.out.println(a);
}
System.out.println();
// want output to be anteater, antelope, ant, zebra following the sort
Collections.sort(animals, new sortDemo());
for (String a:animals){
System.out.println(a);
}
}
public int compare(String s1, String s2) {
if (s1.charAt(0) > s2.charAt(0)){
return 1;
} else if (s1.charAt(0) == s2.charAt(0)){
if(s1.length() < s2.length()) {
return 1;
} else if (s1.length() == s2.length()) {
return s1.compareTo(s2);
} else {
return -1;
}
} else {
return -1;
}
}
}
[docs] (https://docs.python.org/3/howto/sorting.html) довольно прямолинейны. Похоже, что ваше сравнение сложное, что означает, что 'cmp_to_key' может быть тем, что вы ищете (поиск документов). – alfasin