Mengurutkan Data
Mengurutkan angka itu mudah. Yang benar-benar berguna adalah mengurutkan daftar data menurut salah satu isinya — dan itu cuma butuh satu parameter tambahan.
Intisari
sorted(data)menghasilkan list baru.data.sort()mengubah aslinya.reverse=Truemembalik urutan, dari besar ke kecil.key=menentukan berdasarkan apa diurutkan — ini bagian yang paling berguna.- Untuk daftar dictionary:
sorted(data, key=lambda x: x["nilai"]). - Teks diurutkan menurut kode karakter, jadi huruf besar mendahului huruf kecil. Netralkan dengan
key=str.lower.
Dasar
angka = [5, 2, 9, 1]
sorted(angka) # [1, 2, 5, 9] list baru
sorted(angka, reverse=True) # [9, 5, 2, 1]
print(angka) # [5, 2, 9, 1] ← asli tetap utuh
angka.sort() # mengubah di tempat, mengembalikan None
print(angka) # [1, 2, 5, 9]
Kapan pakai yang mana? Pakai sorted() secara default — ia tidak merusak data aslimu,
dan hasilnya bisa langsung ditugaskan ke variabel. Pakai .sort() hanya kalau kamu memang
ingin list itu berubah permanen.
Mengurutkan teks
nama = ["budi", "Ani", "cici"]
sorted(nama) # ['Ani', 'budi', 'cici']
sorted(nama, key=str.lower) # ['Ani', 'budi', 'cici']
Contoh di atas kebetulan sama hasilnya, tapi coba ["budi", "Cici", "ani"]:
urutan mentahnya menaruh semua huruf besar duluan (['Cici', 'ani', 'budi']) karena huruf besar
punya kode karakter lebih kecil. key=str.lower membuatnya berurutan seperti yang dimaksud manusia.
key — mengurutkan berdasarkan apa
Ini inti halaman aslinya. key diisi sebuah fungsi yang dipanggil untuk setiap item; nilai kembaliannya yang dibandingkan.
kata = ["python", "ai", "belajar"]
sorted(kata) # ['ai', 'belajar', 'python'] abjad
sorted(kata, key=len) # ['ai', 'python', 'belajar'] panjang katanya
Mengurutkan daftar dictionary
Inilah yang akan kamu pakai di dunia nyata:
siswa = [
{"nama": "Ani", "nilai": 85},
{"nama": "Budi", "nilai": 92},
{"nama": "Cici", "nilai": 78},
]
# Menurut nilai, dari tertinggi
peringkat = sorted(siswa, key=lambda s: s["nilai"], reverse=True)
for i, s in enumerate(peringkat, start=1):
print(f"{i}. {s['nama']:<8} {s['nilai']}")
1. Budi 92
2. Ani 85
3. Cici 78
Apa itu lambda? Cara menulis fungsi sangat pendek tanpa memberinya nama.
lambda s: s["nilai"] berarti “diberi s, jawab s["nilai"]”.
Untuk sekarang, cukup hafalkan bentuknya sebagai pola pengurutan —
fungsi lengkapnya dibahas di Fase 5.
Mengurutkan dictionary
harga = {"mangga": 20000, "apel": 15000, "jeruk": 12000}
# Menurut kunci (abjad)
for k, v in sorted(harga.items()):
print(k, v)
# Menurut nilai (termurah dulu)
for k, v in sorted(harga.items(), key=lambda x: x[1]):
print(k, v)
harga.items() menghasilkan pasangan (kunci, nilai), jadi x[0] adalah kuncinya dan x[1] nilainya.
Ringkasan
| Ingin | Tulis |
|---|---|
| Urut menaik | sorted(data) |
| Urut menurun | sorted(data, reverse=True) |
| Abaikan besar/kecil huruf | sorted(data, key=str.lower) |
| Menurut panjang | sorted(data, key=len) |
| Menurut isi dictionary | sorted(data, key=lambda x: x["nilai"]) |
| Ambil 3 teratas | sorted(data, reverse=True)[:3] |
Latihan: buat daftar 5 produk berisi nama, harga, dan stok sebagai list of dictionary. Tampilkan: daftar diurutkan dari termurah, tiga produk dengan stok terbanyak, dan total nilai seluruh persediaan (harga × stok).
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.