Alat berikut memvisualisasikan apa yang dilakukan komputer langkah demi langkah saat menjalankan program tersebut
Editor Kode Python
Punya cara lain untuk menyelesaikan solusi ini?
Sebelumnya. Tulis program Python untuk menemukan kata berulang pertama dalam string yang diberikan
Lanjut. Tulis program Python untuk menghapus spasi dari string yang diberikan
Berapa tingkat kesulitan latihan ini?
Mudah Sedang KerasUji keterampilan Pemrograman Anda dengan kuis w3resource
Ikuti kami di Facebook dan Twitter untuk pembaruan terbaru.
Piton. Kiat Hari Ini
Deque
Deque atau (Double Ended Queue) adalah objek Python dua ujung yang dengannya Anda dapat melakukan operasi tertentu dari kedua ujungnya
Ini dapat digunakan saat kumpulan diperlukan untuk dioperasikan di kedua ujungnya dan dapat memberikan efisiensi dan kesederhanaan dibandingkan struktur data tradisional seperti daftar
Alat berikut memvisualisasikan apa yang dilakukan komputer langkah demi langkah saat menjalankan program tersebut
Editor Kode Python
Punya cara lain untuk menyelesaikan solusi ini?
Sebelumnya. Tulis program Python untuk menemukan karakter berulang pertama dari string yang diberikan di mana indeks kejadian pertama terkecil
Lanjut. Tulis program Python untuk menemukan kata yang paling sering diulang kedua dalam string yang diberikan
Berapa tingkat kesulitan latihan ini?
Mudah Sedang KerasUji keterampilan Pemrograman Anda dengan kuis w3resource
Ikuti kami di Facebook dan Twitter untuk pembaruan terbaru.
Piton. Kiat Hari Ini
Deque
Deque atau (Double Ended Queue) adalah objek Python dua ujung yang dengannya Anda dapat melakukan operasi tertentu dari kedua ujungnya
Ini dapat digunakan saat kumpulan diperlukan untuk dioperasikan di kedua ujungnya dan dapat memberikan efisiensi dan kesederhanaan dibandingkan struktur data tradisional seperti daftar
Artikel ini akan membahas empat hal. cara yang salah untuk menemukan kata yang digandakan, cara menemukan kata yang diulang dengan benar dalam kalimat dengan Python, menghitung kemunculan kata yang digandakan, dan, terakhir, mendiskusikan cara menangani tanda baca saat menghitung kata yang digandakan dalam string Python
Cara yang Salah untuk Menemukan Kata yang Digandakan dalam String Python
The first function that may come to mind when counting words in a string is . count() method. The in this method is a substring (NOT a word) to look for in .
Kode berikut menunjukkan bagaimana metode dapat menghasilkan hasil yang salah
1
2
3
4
5
6
7
8
str1 = "beberapa teks di sini"
str2 = "beberapa latihan membuat seseorang lelah"
# Correct results from .count()
cetak(str1. hitung("beberapa")) # returns 1
# Wrong results from .count()
cetak(str2. hitung("beberapa")) # returns 2
. count() dalam contoh kedua mengembalikan hasil yang salah karena menghitung substring "beberapa" dalam kata "melelahkan"
Berikut adalah dua metode yang digunakan untuk mendapatkan hasil yang benar
- Metode 1. Menggunakan kamus for-loop dan Python, dan
- Metode 2. Menggunakan koleksi. metode Penghitung()
Metode 1. Menggunakan kamus for-loop dan Python
Metode ini menyelesaikan tugas menghitung kata yang digandakan dalam tiga langkah. mengubah string Python menjadi daftar kata, mengulangi kata-kata dalam daftar, menghitung kejadian, memfilter hasil untuk mendapatkan duplikat, dan terakhir, menyortir daftar agar kata yang paling banyak digandakan muncul lebih dulu
Ini kodenya dengan komentar untuk menjelaskan setiap baris
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
def count_occurence1(str1):
"""
Memasukkan. str1 - String Python
Keluaran. Kamus yang diurutkan dengan jumlah duplikat
kata-kata
"""
# Pisahkan kalimat menjadi kata-kata di sepanjang spasi
kata = str1. pisah()
# Menginisialisasi kamus kosong untuk menyimpan hitungan kita.
menghitung = {}
# Ulangi setiap kata dan hitung kemunculannya
untuk kata dalam kata:
# Jika dihitung. get(word) mengembalikan Tidak ada, artinya
# ini pertama kali menemukan kata itu
# Dalam hal ini, buat kunci. nilai pembayaran sesuai hitungan
# dengan kuncinya adalah kata dan nilai=1 (kemunculan pertama)
# jika kata sudah ada, tambah jumlahnya
# per 1
jika dihitung. dapatkan(kata) adalah . None:
menghitung[kata] = 1
selain itu.
menghitung[kata] += 1
# Kita menginginkan pengulangan kata yang merupakan kunci. nilai yang mana
# nilai>1
duplikat = {kunci: nilai untuk kunci, nilai . in counts.item() jika nilai > 1}
# Urutkan kamus yang dihasilkan berdasarkan item[1] yang merupakan nilai
# reverse=True berarti mengurutkan dalam urutan menurun.
# Penalaran. Dicts mempertahankan urutan penyisipan di Python 3. 7 dan seterusnya.
sorted_counts = dict(
diurutkan(digandakan. item(), kunci . =lambda item: barang[1], reverse=True)
)
# mengembalikan hasil
kembalikan diurutkan_ menghitung
# Inisialisasi string pertama
str1 = "Dia mengambil tiga ribu tiga ratus dan\
dan tiga puluh tiga dan dia membutuhkan lebih banyak. "
# Panggil fungsi coutn_occurence1() untuk menemukan duplikat
result1 = count_occurence1(str1)
# Hasil cetak
cetak(hasil1)
str2 = "Beberapa kalimat di sini. Beberapa kalimat yang akan diperiksa. "
results2 = count_occurence1(str2)
cetak(hasil2)
Keluaran
{'and': 4, 'three': 3} {'Some': 2, 'sentence': 2}Alternatifnya, Anda dapat menggunakan counts=collections. defaultdict(int) sebagai ganti menginisialisasi kamus kosong sebagai counts={}. Yang pertama membuat item apa pun yang tidak ada saat Anda mencoba mengaksesnya
Hitungan = koleksi. defaultdict(int) berarti kamus counts hanya akan menerima bilangan bulat (int) sebagai nilainya, bukan tipe data lainnya. Lihat di bawah
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
impor koleksi
def count_occurence_1a(str1):
"""
Memasukkan. str1. String yang ingin kita proses,
Pengembalian. Kamus hitungan untuk kata yang digandakan
"""
kata = str1. pisah()
menghitung = koleksi. defaultdict(int)
untuk kata dalam kata:
menghitung[kata] += 1
menghitung = {kunci: nilai untuk kunci, nilai . in counts.item() jika nilai > 1}
sort_counts = dict(sorted(counts.item(), kunci . =lambda item: barang[1], reverse=True))
kembalikan urutkan_ menghitung
# Inisialisasi string pertama
str1 = "Dia mengambil tiga ribu tiga ratus dan\
dan tiga puluh tiga dan dia membutuhkan lebih banyak. "
result1 = count_occurence_1a(str1)
cetak(hasil1)
str2 = "Beberapa kalimat di sini. Beberapa kalimat yang akan diperiksa. "
results2 = count_occurence_1a(str2)
cetak(hasil2)
Keluaran
{'and': 4, 'three': 3} {'Some': 2, 'sentence': 2}Metode 2. Menggunakan koleksi. Metode Penghitung()
This method uses the collection.Counter() method is an integral part of counting word occurrences in a Python string. Once the counts are generated, we filter the duplicates and sort the resulting dictionary.
Berikut adalah contoh dalam kode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
impor koleksi
def count_occurence2(str1):
"""
Memasukkan. str1. String yang ingin kita proses,
Keluaran. Kamus hitungan untuk kata yang digandakan
"""
kata = str1. pisah()
menghitung = {}
# Gunakan koleksi. Counter() menghitung kejadian dari
# setiap kata dalam daftar 'kata'
menghitung = koleksi. Penghitung(kata) < . paling_umum(2)# .most_common(2)
# Dapatkan hasil duplikat dengan menunjukkan dengan kunci. pasangan nilai untuk
# yang nilainya setidaknya dua kejadian
duplikat = {kunci: nilai untuk kunci, nilai . in counts.item() jika nilai >= 2}
# Mengurutkan kamus menggunakan nilai.
sorted_counts = dict(
diurutkan(digandakan. item(), kunci . =lambda item: barang[1], reverse=True)
)
kembalikan diurutkan_ menghitung
# Inisialisasi string pertama
str1 = "Dia mengambil tiga ribu tiga ratus dan\
dan tiga puluh tiga dan dia membutuhkan lebih banyak. "
# Panggil fungsi coutn_occurence2() untuk menemukan duplikat
result1 = count_occurence2(str1)
# Hasil cetak
cetak(hasil1)
str2 = "Beberapa kalimat di sini. Beberapa kalimat yang akan diperiksa. "
results2 = count_occurence2(str2)
cetak(hasil2)
Keluaran
{'and': 4, 'three': 3} {'Some': 2, 'sentence': 2}Berurusan dengan Tanda Baca saat Menghitung Kata Duplikat
Kapitalisasi dan tanda baca dalam String dapat menyebabkan metode di atas mengembalikan hasil yang tidak diharapkan
Mari panggil fungsi count_occurence2() yang dibuat di Metode 2 untuk melihat kemungkinan masalah dengan tanda baca
1
2
3
4
5
6
7
str3 = "Beberapa kalimat di sini. Beberapa kalimat yang akan diperiksa. "
results3 = count_occurence2(str3)
cetak(hasil3)
str4 = "Aturan harus diikuti. Aturannya, dalam beberapa kasus, adalah$"
results4 = count_occurence2(str4)
cetak(hasil4)
Keluaran
{'Some': 2, 'sentence': 2} {'The': 2}Koleksi. Penghitung () yang digunakan dalam fungsi count_occurence2 () peka huruf besar-kecil, itulah sebabnya "Beberapa" dan "beberapa" diperlakukan sebagai kata yang berbeda dalam contoh pertama
Dalam kasus kedua, tanda baca memengaruhi hitungan kami, mis. g. , “rules”, dan “are$” dihitung sebagai kata. Idealnya, kita mungkin ingin menghapus tanda baca agar memiliki dua kejadian untuk “rules” dan “are”
Untuk menambahkan fungsionalitas tersebut, kita perlu memasukkan dua argumen lagi ke fungsi case_sensitive dan strip_punctuation, lalu tambahkan baris berikut di awal fungsi. Lihat kode lengkap setelah cuplikan ini
1
2
3
4
5
6
7
8
jika tidak peka huruf besar kecil.
# Ubah string menjadi huruf kecil sehingga, misalnya,
# "Beberapa" dan "beberapa" dihitung sebagai kata yang sama
str1 = str1. lebih rendah()
jika strip_punctuation == Benar.
# Hapus tanda baca
str1 = str1. terjemahkan(str. maketrans("", . , string.tanda baca))
Kode lengkap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
impor koleksi
impor string
def count_occurence2_updated(str1, case_sensitive=False, strip_punctuation=True):
"""
Memasukkan. str1. String yang ingin kita proses,
Keluaran. Kamus hitungan untuk kata yang digandakan
"""
jika tidak peka huruf besar kecil.
# Ubah string menjadi huruf kecil sehingga, misalnya,
# "Beberapa" dan "beberapa" dihitung sebagai kata yang sama
str1 = str1. lebih rendah()
jika strip_punctuation == Benar:
# Hapus tanda baca
str1 = str1. terjemahkan(str. maketrans("", . , string.tanda baca))
kata = str1. pisah()
menghitung = {}
# Gunakan koleksi. Counter() menghitung kejadian dari
# setiap kata dalam daftar 'kata'
menghitung = koleksi. Penghitung(kata) < . paling_umum(2)# .most_common(2)
# Dapatkan hasil duplikat dengan menunjukkan dengan kunci. pasangan nilai untuk
# yang nilainya setidaknya dua kejadian
duplikat = {kunci: nilai untuk kunci, nilai . in counts.item() jika nilai >= 2}
# Mengurutkan kamus menggunakan nilai.
sorted_counts = dict(
diurutkan(digandakan. item(), kunci . =lambda item: barang[1], reverse=True)
)
return sorted_counts
str3 = "Beberapa kalimat di sini. Beberapa kalimat yang akan diperiksa. "
results3a = count_occurence2_updated(str3, case_sensitive=False)
cetak(hasil3a)
results3a = count_occurence2_updated(str3, case_sensitive=True)
cetak(hasil3a)
str4 = "Aturan harus diikuti. Aturannya, dalam beberapa kasus, adalah$"
results4a = count_occurence2_updated(str4, case_sensitive=True, strip_punctuation=True)
cetak(hasil4a)
results4b = count_occurence2_updated(str4, case_sensitive=True, strip_punctuation=False)
cetak(hasil4b)
Keluaran
{'some': 3, 'sentence': 2} {'Some': 2, 'sentence': 2} {'The': 2, 'rules': 2, 'are': 2} {'The': 2}_Kesimpulan
Hindari menggunakan str. count() saat menghitung kata dalam string Python. Fungsi menghitung substring, bukan kata-kata. Jika Anda ingin menghitung kata yang digandakan, gunakan dua metode yang dibahas dalam artikel
Jika Anda ingin menangani kapitalisasi dan tanda baca dengan tepat, gunakan metode count_occurence2_updated() yang dibahas di Bagian sebelumnya. Fungsi ini memungkinkan Anda memutuskan apakah penghitungan harus peka huruf besar-kecil dan menghapus tanda baca