Modul Koleksi Python: Tipe Kontainer Tingkat Lanjut

Belajar menggunakan modul koleksi Python. Master Counter, defaultdict, nametuple, deque, dan cara menyederhanakan struktur data yang kompleks.

Coba di Editor

Ikhtisar

Meskipun container dasar Python—daftar, kamus, set, dan tupel—cukup untuk sebagian besar tugas, program yang kompleks sering kali memerlukan struktur data khusus. Untuk mengatasi hal ini, Python menyediakan modul `koleksi` bawaan. Modul ini berisi tipe data kontainer berkinerja tinggi yang dirancang untuk menyelesaikan tugas pemrograman umum secara lebih efisien dan dengan sintaksis yang lebih bersih dan terdokumentasi sendiri.

Di antara kelas-kelas yang paling berguna adalah `defaultdict`, yang bertindak seperti kamus normal tetapi secara otomatis menginisialisasi kunci yang hilang dengan nilai default (seperti daftar kosong atau bilangan bulat nol), sehingga menghilangkan kebutuhan akan pemeriksaan kunci yang panjang lebar. Pembangkit tenaga listrik lainnya adalah kelas `Counter`, yang secara khusus dioptimalkan untuk menghitung kemunculan item dalam sebuah iterable. Untuk antrian dan tumpukan yang cepat, `deque` (antrian berujung ganda) menawarkan `O(1)` penyisipan dan penghapusan di kedua ujungnya, tidak seperti daftar yang mengalami pergeseran `O(N)`.

Terakhir, modul ini menawarkan `namedtuple`, yang membuat objek ringan seperti tupel yang dapat diakses menggunakan notasi titik serta indeks tradisional (misalnya, `point.x`, bukan `point[0]`). Ini memberi Anda kecepatan dan kekekalan tupel dengan keterbacaan suatu kelas. Memasukkan modul koleksi ke dalam alur kerja Anda menjamin bahwa kode Anda tetap elegan, berperforma tinggi, dan bersih.

Kode & Output Eksekusi

Menghitung kata menggunakan Counter dan mengatur grup kamus dengan defaultdict.

collections_demo.py
Coba di Editor
from collections import Counter, defaultdict, namedtuple

# 1. Counter: Tallying items
votes = ["yes", "no", "yes", "yes", "no"]
vote_counts = Counter(votes)
print(f"Vote Counts: {vote_counts}")
print(f"Most common: {vote_counts.most_common(1)}")

# 2. defaultdict: Grouping values
grouped_data = defaultdict(list)
grouped_data["engineers"].append("Alice")
grouped_data["engineers"].append("Bob")
print(f"Grouped Data: {dict(grouped_data)}")

# 3. namedtuple: Clean records
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"Point x: {p.x}, Point y: {p.y}")
Keluaran Terminal
Vote Counts: Counter({'yes': 3, 'no': 2})
Most common: [('yes', 3)]
Grouped Data: {'engineers': ['Alice', 'Bob']}
Point x: 10, Point y: 20

Implementasi Langkah demi Langkah

  • Menganalisis file log untuk menghitung kejadian kesalahan melalui Counter
  • Membangun antrian prioritas atau penjadwal tugas menggunakan deque
  • Mewakili dimensi koordinat atau catatan data menggunakan bernamatuple

Pertanyaan yang Sering Diajukan

Mengapa deque lebih cepat daripada list untuk operasi antrian?

Daftar memerlukan perpindahan semua elemen berikutnya dalam memori saat menyisipkan atau menghapus dari depan (O(N)). Deque diimplementasikan sebagai daftar tertaut ganda, memungkinkan operasi O(1) di kedua ujungnya.

Bisakah saya mengubah elemen dari tupel bernama?

Tidak. Karena tupel bernama mewarisi tupel standar, tupel tersebut sepenuhnya tidak dapat diubah. Anda harus menggunakan metode ._replace() untuk mengembalikan instance baru yang telah dimodifikasi.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

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