← Semua pembelajaran / Python Dasar
Fase 4 · Struktur Data

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.

Sumber asli docs.python.org Resmi Rangkuman ~4 menit baca

Intisari

  • sorted(data) menghasilkan list baru. data.sort() mengubah aslinya.
  • reverse=True membalik 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

InginTulis
Urut menaiksorted(data)
Urut menurunsorted(data, reverse=True)
Abaikan besar/kecil hurufsorted(data, key=str.lower)
Menurut panjangsorted(data, key=len)
Menurut isi dictionarysorted(data, key=lambda x: x["nilai"])
Ambil 3 teratassorted(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.