Cara Menghitung Kemunculan dalam Daftar dengan Python

Pelajari cara terbaik untuk menghitung kemunculan elemen dalam daftar Python. Bandingkan metode count(), collections.Counter, dan penghitungan kamus.

Coba Solusi ini di Editor

Ikhtisar

Menganalisis kumpulan data sering kali mengharuskan Anda menghitung kemunculan elemen individual. Misalnya, menghitung berapa banyak suara yang diterima masing-masing kandidat, menghitung frekuensi kata dalam file teks, atau mengidentifikasi duplikat dalam log transaksi. Python menyediakan beberapa alat untuk menyelesaikan masalah ini, bergantung pada apakah Anda mencari jumlah item tunggal atau penghitungan frekuensi lengkap.

Untuk memeriksa frekuensi satu elemen tertentu, tipe daftar bawaan menyediakan metode `.count(value)`. Ini mengulangi daftar dan mengembalikan bilangan bulat yang menghitung berapa kali nilai persisnya muncul. Meskipun sederhana dan mudah dibaca, memanggil `.count()` dalam satu lingkaran untuk menghitung semua elemen sangat tidak efisien, berjalan dalam kompleksitas O(N^2).

Untuk menghitung frekuensi semua elemen secara bersamaan dalam satu lintasan, perpustakaan standar menawarkan kelas `Penghitung` dalam modul `koleksi`. Meneruskan daftar ke `Penghitung` akan mengembalikan objek seperti kamus yang mewakili frekuensi semua elemen dalam waktu O(N). Ini juga menyediakan metode pembantu seperti `most_common()` untuk mengambil item teratas dengan cepat.

Kode & Output Eksekusi

Kode ini menunjukkan penghitungan elemen tunggal dalam daftar dan mendapatkan jumlah total item menggunakan collections.Counter.

count_occurrences.py
Coba di Editor
from collections import Counter

colors = ["red", "blue", "red", "green", "blue", "red"]

# Method 1: Count a single item using list.count()
red_count = colors.count("red")
print("Occurrences of 'red':", red_count)

# Method 2: Count all items using collections.Counter (Fast and powerful)
color_counts = Counter(colors)
print("\nCounter Object:", color_counts)
print("Count of 'blue':", color_counts["blue"])

# Getting the top most common items
print("Most common color:", color_counts.most_common(1))

# Method 3: Counting manually using a loop and a standard dictionary
manual_counts = {}
for item in colors:
    manual_counts[item] = manual_counts.get(item, 0) + 1
print("\nManual dict count:", manual_counts)
Keluaran Terminal
Occurrences of 'red': 3

Counter Object: Counter({'red': 3, 'blue': 2, 'green': 1})
Count of 'blue': 2
Most common color: [('red', 3)]

Manual dict count: {'red': 3, 'blue': 2, 'green': 1}

Implementasi Langkah demi Langkah

  • Panggil list_variable.count(value) jika Anda hanya memerlukan hitungan satu item tertentu dalam daftar.
  • Impor collections.Counter dan teruskan daftar untuk menghitung semua elemen unik dalam satu pass yang dioptimalkan.
  • Gunakan metode .most_common(n) pada objek Counter untuk mengekstrak n elemen paling sering.

Pertanyaan yang Sering Diajukan

Apa yang terjadi jika saya mencari kunci yang hilang di objek collections.Counter?

Tidak seperti kamus standar yang memunculkan KeyError, objek Counter mengembalikan 0 untuk elemen yang hilang, mewakili nol kejadian.

Berapa kompleksitas waktu Counter dibandingkan dengan menghitung dalam satu lingkaran dengan list.count()?

Penghitung menghitung semua elemen dalam waktu linier O(N) dengan melewati daftar satu kali. Mengulangi elemen daftar dan memanggil list.count() membutuhkan waktu kuadratik O(N^2), yang sangat lambat untuk daftar besar.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

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