Materi
Menyaring lalu mengurutkan dan mengurutkan lalu menyaring menghasilkan isi yang sama, karena kedua langkah itu tidak membuang data yang satunya perlukan. Begitu langkah memotong masuk, urutannya berubah arti. Memotong sepuluh teratas lalu menyaring wilayah memberi hasil yang berbeda dengan menyaring wilayah lalu memotong sepuluh teratas, karena pemotongan sudah membuang data sebelum penyaringan sempat melihatnya.
# Dua urutan langkah, dua isi hasil yang berbeda.
urut_dulu = sorted(data, key=lambda d: -d["nilai"])[:10]
hasil_a = [d for d in urut_dulu if d["wilayah"] == "X"] # bisa kurang dari 10
saring_dulu = [d for d in data if d["wilayah"] == "X"]
hasil_b = sorted(saring_dulu, key=lambda d: -d["nilai"])[:10]Pengurutan Python bersifat stabil: dua data yang kuncinya sama tetap berada pada urutan relatif yang sama seperti sebelum diurutkan. Sifat itu dimanfaatkan untuk urutan bertingkat tanpa tuple, yaitu dengan mengurutkan dua kali, kunci yang paling tidak penting lebih dulu dan kunci utama belakangan. Contoh di luar latihan: daftar transaksi diurutkan berdasarkan tanggal, lalu diurutkan lagi berdasarkan cabang, dan hasilnya tanggal tetap runut di dalam tiap cabang.