Lewati ke konten utama

Cara Mengurutkan Dictionary berdasarkan Nilai di Python

Pelajari metode efisien untuk mengurutkan dictionary berdasarkan nilai di Python. Temukan pengurutan naik dan turun serta tips bonus untuk pengurutan berdasarkan key.
· 5 mnt Baca

Jelajahi bersama AI

Pengurutan adalah operasi mendasar dalam manipulasi data, dan dictionary di Python tidak terkecuali. Baik saat kita mengerjakan proyek analisis data yang kompleks maupun skrip sederhana, memahami cara mengurutkan dictionary berdasarkan nilai secara efisien dapat sangat berguna.

Dalam artikel ini, kami menguraikan berbagai metode untuk mengurutkan dictionary berdasarkan nilainya di Python, sehingga kita memiliki alat untuk menata data sesuai kebutuhan.

Jawaban Singkat: Cara Mengurutkan Dictionary berdasarkan Nilai di Python

Untuk cepat mengurutkan dictionary berdasarkan nilai, kita dapat menggunakan fungsi bawaan Python .sorted() bersama dengan fungsi lambda. Metode ini sederhana dan efisien untuk sebagian besar kasus penggunaan.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))

print(sorted_by_values)

# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Sekarang, mari kita mundur selangkah dan memahami dictionary di Python serta alasan kita mungkin perlu mengurutkannya.

Apa itu Dictionary di Python?

Python dictionaries adalah jenis struktur data yang menyimpan data dalam pasangan key-value. Struktur ini sangat serbaguna dan memungkinkan pencarian, penyisipan, dan penghapusan yang cepat. Berikut contoh sederhana:

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}

# No expected output

Pada dictionary di atas, nama siswa adalah key, dan nilainya adalah value. 

Dictionary berguna dalam banyak skenario, misalnya saat kita perlu menyimpan dan mengambil data secara efisien. Namun, ada kalanya mengurutkan data ini berdasarkan nilai, bukan berdasarkan key, menjadi perlu—misalnya, saat kita ingin memberi peringkat siswa berdasarkan nilai mereka.

Cara Mengurutkan Dictionary berdasarkan Nilai di Python

Sekarang, mari kita lihat lebih dekat fungsi .sorted() di Python dan cara menggunakannya secara khusus untuk mengurutkan dictionary berdasarkan nilai.

Cara mengurutkan dictionary berdasarkan nilai menggunakan .sorted()

Fungsi .sorted() adalah alat yang kuat dan fleksibel untuk pengurutan di Python. Untuk mengurutkan dictionary berdasarkan nilainya, kita dapat menggunakan fungsi lambda untuk menentukan bahwa pengurutan harus didasarkan pada nilai dictionary.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))

print(sorted_by_values)

# Expected output: 
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Pada contoh ini, student_scores.items() mengembalikan objek tampilan yang menampilkan daftar pasangan tuple key-value dari dictionary. Fungsi .sorted() mengurutkan pasangan ini berdasarkan nilainya (item[1]), dan dict() mengonversi daftar yang telah diurutkan kembali menjadi dictionary.

Cara mengurutkan dictionary berdasarkan nilai secara menurun atau menaik

Secara bawaan, fungsi .sorted() mengurutkan secara menaik. Namun, bergantung pada situasi, kita dapat dengan mudah memodifikasinya untuk mengurutkan secara menurun atau menaik dengan mengatur parameter reverse ke True atau False.

Cara mengurutkan dictionary secara menaik

Seperti disebutkan, dictionary akan diurutkan secara menaik secara bawaan saat menggunakan fungsi .sorted(). Kita juga dapat memperoleh urutan menaik dengan mengatur parameter reverse ke False.

sorted_by_values_asc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=False))
print(sorted_by_values_asc)

# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Cara mengurutkan dictionary secara menurun

Jika kita ingin mengurutkan secara menaik, kita dapat mengatur parameter reverse ke True.

sorted_by_values_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True))
print(sorted_by_values_desc)

# Expected output:
# {'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}

Bonus: Cara Mengurutkan Dictionary berdasarkan Key di Python

Meskipun artikel ini berfokus pada pengurutan berdasarkan nilai, ada baiknya juga mengetahui cara mengurutkan dictionary berdasarkan key. Ini dapat dilakukan dengan cara serupa menggunakan fungsi .sorted().

sorted_by_keys = dict(sorted(student_scores.items()))
print(sorted_by_keys)

# Expected output:
# {'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85}

Untuk urutan menurun, cukup atur reverse=True:

sorted_by_keys_desc = dict(sorted(student_scores.items(), reverse=True))
print(sorted_by_keys_desc)

# Expected output:
# {'Denver': 85', 'Cyrus': 93, 'Ben': 75, 'Alex': 88}

Kesimpulan

Mengurutkan dictionary berdasarkan nilainya di Python adalah tugas umum yang dapat diselesaikan dengan mudah menggunakan fungsi .sorted(). Baik kita memerlukan data dalam urutan menaik maupun menurun, memahami teknik-teknik ini akan membuat tugas manipulasi data kita lebih lugas dan efisien. Dengan menguasai metode pengurutan ini, kita dapat memastikan data selalu tertata sesuai kebutuhan.

FAQs

Q1: Can I sort a dictionary by values if the values are strings instead of numbers?

A1: Ya, kita dapat mengurutkan dictionary berdasarkan nilai, bahkan jika nilainya berupa string. Fungsi .sorted() akan mengurutkan nilai secara alfabetis dalam urutan menaik atau menurun, sama seperti pada angka.

Q2: How can I sort a dictionary by values if it contains nested dictionaries?

A2: Untuk mengurutkan dictionary yang berisi dictionary bertingkat (nested), kita perlu mendefinisikan fungsi pengurutan kustom yang mengekstrak dan membandingkan nilai bertingkat yang relevan. Ini memerlukan fungsi lambda yang lebih kompleks atau fungsi terpisah untuk menangani perbandingan.

Q3: Can I sort a dictionary by values in-place without creating a new dictionary?

A3: Tidak, dictionary di Python pada dasarnya adalah koleksi tak berurutan pada versi sebelum 3.7, dan meskipun mempertahankan urutan penyisipan mulai Python 3.7, tidak ada metode bawaan untuk mengurutkannya secara in-place. Mengurutkan dictionary selalu menghasilkan pembuatan dictionary baru dengan urutan yang diinginkan.

Q4: What is the time complexity of sorting a dictionary by values in Python?

A4: Kompleksitas waktu untuk mengurutkan dictionary berdasarkan nilai menggunakan fungsi .sorted() adalah O(n log n), di mana n adalah jumlah pasangan key-value dalam dictionary. Ini karena .sorted() secara internal menggunakan Timsort, algoritma pengurutan hibrida dengan kompleksitas ini.

Q5: Will sorting a dictionary by values change the original dictionary?

A5: Tidak, mengurutkan dictionary berdasarkan nilai menggunakan fungsi .sorted() membuat dictionary baru. Dictionary asli tidak berubah.

Neetika Khandelwal

Penulis

Neetika Khandelwal

Saya adalah seorang pengembang Java dan penulis teknis berpengalaman yang mengkhususkan diri dalam data science, kecerdasan buatan (AI), dan pemrograman Java. Dengan pengalaman lebih dari 3+ tahun di pengembangan perangkat lunak, saya telah mengasah keahlian yang solid dalam membangun aplikasi yang andal dan dapat diskalakan serta memanfaatkan fleksibilitas Java untuk menyelesaikan masalah yang kompleks. Saya bersemangat berbagi pengetahuan dengan komunitas teknologi yang lebih luas. Melalui artikel teknis, tutorial, dan panduan yang komprehensif, saya berupaya mengurai topik-topik data science dan AI yang rumit agar mudah diakses oleh pemula maupun profesional berpengalaman. Saat ini, saya telah menerbitkan lebih dari 125+ blog.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026