Dalam tutorial ini, Anda akan belajar cara menggunakan objek penghitung dari modul koleksi Python.
Saat Anda bekerja dengan urutan panjang di Python, katakanlah, daftar atau string Python, terkadang Anda perlu menyimpan item yang muncul dalam urutan dan berapa kali mereka muncul.
Kamus Python adalah struktur data bawaan yang cocok untuk aplikasi semacam itu. Namun, kelas Penghitung Python dari modul koleksi dapat menyederhanakan ini—dengan membuat penghitung—yang merupakan kamus item dan jumlahnya dalam urutan.
Selama beberapa menit berikutnya, Anda akan mempelajari hal berikut:
- Gunakan objek penghitung Python
- Buat kamus Python untuk menyimpan nilai hitungan item dalam iterable
- Tulis ulang kamus menggunakan penghitung Python dengan sintaks yang disederhanakan
- Lakukan operasi seperti memperbarui dan mengurangi elemen, menemukan persimpangan antara dua objek penghitung
- Dapatkan item yang paling sering di counter menggunakan metode most_common()
Mari kita mulai!
Modul Koleksi Python dan Kelas Penghitung
Anda akan sering menggunakan kamus Python untuk menyimpan item dan hitungannya dalam iterable. Item dan hitungan masing-masing disimpan sebagai kunci dan nilai.
Karena kelas Penghitung adalah bagian dari modul koleksi bawaan Python, Anda dapat mengimpornya ke dalam skrip Python Anda seperti ini:
from collections import Counter
Setelah mengimpor kelas Penghitung seperti yang disebutkan, Anda dapat membuat instance objek penghitung seperti yang ditunjukkan:
<counter_object> = Counter(iterable)
Di Sini:
- iterable adalah iterable Python yang valid seperti daftar Python, string, atau tuple.
- Item dalam iterable harus hashable.
Sekarang kita tahu cara menggunakan Counter untuk membuat objek counter dari iterable Python apa pun, mari kita mulai coding.
Contoh yang digunakan dalam tutorial ini dapat ditemukan di intisari GitHub ini.
Cara Membuat Objek Penghitung dari Python Iterables
Mari kita buat string Python, katakanlah, ‘renaissance’ dan beri nama kata.
>>> word = "renaissance"
Tujuan kami adalah membuat kamus di mana setiap huruf dalam string kata dipetakan ke frekuensi kemunculannya dalam string. Salah satu pendekatan adalah menggunakan for loop seperti yang ditunjukkan:
>>> letter_count = {} >>> for letter in word: ... if letter not in letter_count: ... letter_count[letter] = 0 ... letter_count[letter] += 1 ... >>> letter_count {'r': 1, 'e': 2, 'n': 2, 'a': 2, 'i': 1, 's': 2, 'c': 1}
Mari kita parsing apa yang dilakukan oleh cuplikan kode di atas:
- Inisialisasi letter_count ke kamus Python kosong.
- Loop melalui string kata.
- Memeriksa apakah huruf ada dalam kamus letter_count.
- Jika huruf tidak ada, itu menambahkannya dengan nilai 0 dan kemudian menambah nilainya dengan 1.
- Untuk setiap kemunculan huruf dalam kata, nilai huruf yang sesuai bertambah 1.
- Ini berlanjut sampai kita mengulang seluruh string.
Kami membuat kamus letter_count — sendiri — menggunakan for loop untuk mengulang kata string.
Sekarang mari gunakan kelas Counter dari modul collections. Kita hanya perlu mengirimkan string kata ke Counter() untuk mendapatkan letter_count tanpa harus mengulang melalui iterables.
>>> from collections import Counter >>> letter_count = Counter(word) >>> letter_count Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1})
Objek penghitung juga merupakan kamus Python. Kita dapat menggunakan fungsi isinstance() bawaan untuk memverifikasi ini:
>>> isinstance(letter_count,dict) True
Seperti yang terlihat, isinstance(letter_count, dict) mengembalikan True yang menunjukkan bahwa objek counter letter_count adalah turunan dari kelas dict Python.
Memodifikasi Objek Penghitung
Sejauh ini, kita telah belajar membuat objek penghitung dari string Python.
Anda juga dapat memodifikasi objek penghitung dengan memperbaruinya dengan elemen dari iterable lain atau mengurangi iterable lain darinya.
Memperbarui Penghitung dengan Elemen dari Iterable Lain
Mari menginisialisasi string lain another_word:
>>> another_word = "effervescence"
Misalkan kita ingin memperbarui objek penghitung letter_count dengan item dari string kata_lain.
Kita dapat menggunakan metode update() pada objek counter letter_count.
>>> letter_count.update(another_word) >>> letter_count Counter({'e': 7, 'n': 3, 's': 3, 'c': 3, 'r': 2, 'a': 2, 'f': 2, 'i': 1, 'v': 1})
Pada keluaran, kita melihat bahwa objek penghitung telah diperbarui untuk menyertakan huruf dan jumlah kemunculannya dari kata_lain.
Mengurangi Elemen dari Iterable Lain
Sekarang mari kita kurangi nilai another_word dari objek letter_count. Untuk melakukannya, kita dapat menggunakan metode pengurangan(). Menggunakan
Mari kita kurangi kata_lain dari jumlah_huruf.
>>> letter_count.subtract(another_word) >>> letter_count Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1, 'f': 0, 'v': 0})
Kita melihat bahwa nilai yang sesuai dengan huruf di kata_lain telah dikurangi, tetapi tombol tambahan ‘f’ dan ‘v’ tidak dihapus. Mereka sekarang memetakan ke nilai 0.
Catatan: Di sini, kami telah meneruskan kata_lain, sebuah string Python, ke pemanggilan metode pengurangan(). Kami juga dapat mengirimkan objek penghitung Python atau iterable lainnya.
Persimpangan Antara Dua Objek Penghitung dengan Python
Terkadang Anda mungkin ingin menemukan persimpangan antara dua objek penghitung Python untuk mengidentifikasi kunci mana yang umum di antara keduanya.
Mari buat objek penghitung, katakanlah, letter_count_2, dari string kata_lain ‘buih’.
>>> another_word = "effervescence" >>> letter_count_2 = Counter(another_word) >>> letter_count_2 Counter({'e': 5, 'f': 2, 'c': 2, 'r': 1, 'v': 1, 's': 1, 'n': 1})
Kita dapat menggunakan operator & sederhana untuk menemukan persimpangan antara jumlah_huruf dan jumlah_huruf_2.
>>> letter_count & letter_count_2 Counter({'e': 2, 'r': 1, 'n': 1, 's': 1, 'c': 1})
Perhatikan bagaimana Anda mendapatkan kunci dan jumlah kemunculan yang umum untuk kedua kata tersebut. Baik ‘renaissance’ dan ‘buih’ mengandung dua kemunculan ‘e’, dan satu kemunculan masing-masing dari ‘r’, ‘n’, ‘s’, dan ‘c’ yang sama.
Temukan Item Paling Sering Menggunakan most_common
Operasi umum lainnya pada objek penghitung Python adalah menemukan item yang paling sering muncul.
Untuk mendapatkan top k item paling umum di penghitung, Anda dapat menggunakan metode most_common() pada objek penghitung. Di sini, kami memanggil most_common() pada letter_count untuk menemukan tiga huruf yang paling sering muncul.
>>> letter_count.most_common(3) [('e', 2), ('n', 2), ('a', 2)]
Kita melihat bahwa huruf ‘e’, ’n’, dan ‘a’ muncul dua kali dalam kata ‘renaissance’.
Ini sangat membantu jika penghitung berisi banyak entri dan Anda tertarik untuk bekerja dengan kunci yang paling umum.
Kesimpulan
Berikut ulasan singkat tentang apa yang telah kita pelajari dalam tutorial:
- Kelas Penghitung dari modul koleksi bawaan Python dapat digunakan untuk mendapatkan kamus nilai hitungan semua item dalam iterable apa pun. Anda harus memastikan bahwa semua item di iterable dapat di-hash.
- Anda dapat memperbarui konten dari satu objek penghitung Python dengan konten dari objek penghitung lain atau iterable lainnya menggunakan metode update() dengan sintaks: counter1.update(counter2). Perhatikan bahwa Anda dapat menggunakan iterable apa saja sebagai pengganti penghitung2.
- Jika Anda ingin menghapus konten salah satu iterables dari penghitung yang diperbarui, Anda dapat menggunakan metode pengurangan(): penghitung1.kurangi(penghitung2).
- Untuk menemukan elemen umum antara dua objek penghitung, Anda dapat menggunakan & operator. Diberikan dua penghitung penghitung1 dan penghitung2, penghitung1 & penghitung2 mengembalikan persimpangan dari dua objek penghitung ini.
- Untuk mendapatkan k item yang paling sering di counter, Anda dapat menggunakan metode most_common(). counter.most_common(k) memberikan k item paling umum dan jumlah masing-masing.
Selanjutnya, pelajari cara menggunakan dict default, kelas lain dalam modul koleksi. Anda dapat menggunakan dict default alih-alih kamus Python biasa untuk menangani kunci yang hilang.