Cara Mengurutkan Kamus berdasarkan Nilai dengan Python
Pelajari cara mengurutkan kamus Python berdasarkan nilainya. Temukan penyortiran menggunakan diurutkan(), lambda kunci khusus, dan membuat struktur dikt yang terurut.
Ikhtisar
Meskipun kamus terutama dibuat untuk operasi pencarian cepat menggunakan kunci unik, Anda sering kali perlu mengurutkan item kamus berdasarkan nilainya. Misalnya, mengurutkan siswa berdasarkan nilai ujiannya, membuat daftar produk dari yang termurah hingga termahal, atau mengurutkan jumlah kata berdasarkan frekuensi.
Dengan Python, Anda tidak bisa langsung mengurutkan kamus di tempatnya karena struktur kamus standar tidak mendukung metode pengurutan seperti daftar. Sebaliknya, pendekatan standarnya adalah mengambil item kamus sebagai tupel menggunakan metode `.items()`, mengurutkan tupel tersebut menggunakan fungsi `sorted()` bawaan dengan kunci pengurutan khusus, dan kemudian membangun kembali kamus dari item yang diurutkan.
Kunci pengurutan biasanya berupa fungsi lambda yang mengembalikan elemen kedua tuple (nilai kamus): `key=lambda item: item[1]`. SejakPython 3.7+, kamus standar mempertahankan urutan penyisipan. Mengembalikan daftar tupel yang telah diurutkan ke dalam kamus menggunakan konstruktor `dict()` akan mengembalikan kamus yang bersih dan terurut, siap untuk iterasi.
Kode & Output Eksekusi
Skrip ini menunjukkan pengurutan kamus skor tes berdasarkan nilai dalam urutan menaik dan menurun menggunakan fungsi lambda.
scores = {"Alice": 88, "Bob": 75, "Charlie": 95, "David": 82}
print("Original dictionary:", scores)
# 1. Sort by values (ascending order)
sorted_ascending = dict(sorted(scores.items(), key=lambda item: item[1]))
print("Sorted ascending:", sorted_ascending)
# 2. Sort by values (descending order)
sorted_descending = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print("Sorted descending:", sorted_descending)
# 3. sorting by keys for comparison
sorted_keys = dict(sorted(scores.items(), key=lambda item: item[0]))
print("Sorted by keys:", sorted_keys)Original dictionary: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}
Sorted ascending: {'Bob': 75, 'David': 82, 'Alice': 88, 'Charlie': 95}
Sorted descending: {'Charlie': 95, 'Alice': 88, 'David': 82, 'Bob': 75}
Sorted by keys: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}Implementasi Langkah demi Langkah
- Panggil my_dict.items() untuk mengambil pasangan nilai kunci sebagai daftar tupel.
- Teruskan item kamus ke fungsi sortir().
- Tentukan key=lambda item: item[1] untuk menginstruksikan fungsi sortir() untuk mengurutkan berdasarkan nilai (elemen kedua dari setiap tupel).
- Berikan reverse=True sebagai argumen opsional untuk mengurutkan item dalam urutan menurun.
- Bangun kembali kamus yang telah diurutkan dengan meneruskan daftar tupel yang telah diurutkan ke konstruktor dict().
Pertanyaan yang Sering Diajukan
Apa yang dimaksud dengan key=lambda item: item[1]?
Fungsi sort() meneruskan setiap elemen urutan item (tupel (kunci, nilai)) ke fungsi lambda. item[1] mengekstrak komponen nilai, memberitahu Python untuk mengurutkan tupel berdasarkan nilai.
Apakah mengurutkan kamus mempengaruhi kecepatan pencarian kuncinya?
Tidak, pencarian kunci tetap O(1) kompleksitas waktu rata-rata karena pengurutan hanya mengubah urutan iterasi, bukan struktur tabel hash yang mendasarinya.
Topik Terkait
Pelajari cara mengurutkan daftar dengan Python menggunakan metode sortir() dan fungsi sortir(). Temukan contoh pengurutan kunci khusus dan urutan terbalik.
Cara Mengulangi Kamus dengan PythonPelajari cara mengulang atau mengulangi kamus Python. Temukan metode untuk mengulang kunci, nilai, dan pasangan nilai kunci dengan contoh yang bersih dan dapat dijalankan.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Loop Python
Pelajari cara menggunakan loop Python untuk melakukan iterasi pada data. Kuasai perulangan for, perulangan while, hancurkan, lanjutkan, dan ulangi praktik terbaik dengan contoh interaktif.
Lembar
Pelajari metode kamus Python. Panduan referensi lengkap untuk penyisipan, pengambilan, pembaruan, dan pemeriksaan pasangan nilai kunci.
Python vs Ruby: Scripting, Kerangka Web, dan Filsafat
Bandingkan Python dan Ruby. Pelajari perbedaan halus dalam filosofi, keanggunan sintaksis, kerangka web (Djangovs Rails), dan gaya eksekusi.