Tôi bắt đầu học Python 3. Tôi tự hỏi làm thế nào để thực hiện một sắp xếp tùy chỉnh. Ví dụ, tôi có thể muốn sắp xếp một danh sách các động vật theo cách sau: sắp xếp theo ký tự đầu tiên tăng dần, sau đó theo chiều dài giảm dần, sau đó bằng chữ số tăng dần.Sắp xếp tùy chỉnh bằng Python 3
Danh sách được tạo thành từ "kiến", "linh dương", "ngựa vằn", "anteater" khi được sắp xếp đúng cách sẽ trở thành "anteater", "linh dương", "kiến", "ngựa vằn".
Tôi đã đọc một chút về tài liệu nhưng không nhận được đối số "khóa" cho phương pháp sắp xếp. Bất kỳ ví dụ nào? PS: đây không phải là câu hỏi chuyển nhượng trường. Tôi chỉ tìm cách chơi đùa với python một chút.
tôi đã học java dài, thời gian dài trước đây và có thể đã thực hiện một cái gì đó tùy loại như sau:
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) khá đơn giản. Có vẻ như so sánh của bạn phức tạp, có nghĩa là 'cmp_to_key' có thể là thứ bạn đang tìm kiếm (tìm kiếm tài liệu). – alfasin