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.

Coba Solusi ini di Editor

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.

sort_dict_values.py
Coba di Editor
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)
Keluaran Terminal
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

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.