Anda mungkin sudah menguasai kamus dengan Python dan belajar banyak tentang pemahaman daftar. Sekarang saatnya menggabungkan keterampilan ini dan mempelajari sesuatu yang baru. pemahaman kamus dengan Python
Apa itu Pemahaman Kamus dengan Python?
Sebelum itu, mari kita ingatkan diri kita apa itu pemahaman dalam Python. Ini berarti menerapkan jenis operasi tertentu pada setiap elemen iterator (seperti daftar, kamus, atau tupel). Kita tentu saja dapat membuat logika ini lebih kompleks dengan memasukkan, misalnya, pernyataan bersyarat
Langsung saja kita buat contoh sederhananya. Kami akan membuat kamus, berisi usia beberapa orang
d = {"Alex": 29, "Katherine": 24, "Jonathan": 22} print(d) {'Alex': 29, 'Katherine': 24, 'Jonathan': 22}Bagaimana jika kita ingin menambahkan satu tahun untuk setiap umur dan menyimpan hasilnya di kamus baru?
# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d) {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}Namun, loop {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}_9 dapat ditulis ulang hanya dalam satu baris menggunakan pemahaman kamus
# Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d) {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}Apakah itu terlihat lebih baik? . Mari kita pecahkan menjadi beberapa bagian
Kami memiliki nama sebagai kunci dan usia sebagai nilai. Kamus baru kita harus memiliki struktur yang sama dengan yang lama, # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)1. Di sini, namanya tidak berubah tetapi usianya. Kami membuat kamus baru # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)2 dengan membuka kurung kurawal, dan di dalam menulis # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)3, diikuti dengan titik dua, # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)4, dan # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)5. Sekarang berhenti, dan pikirkan dari mana # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)_3 dan # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)5 berasal, dan bagaimana kita harus memodifikasi # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)5. Mereka berasal dari kamus asli, jadi kita dapat mengulanginya menggunakan metode # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)9 dan kata kunci {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 di mana variabel pertama adalah kunci, dan yang kedua adalah nilai. Jadi, kami menulis loop {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}_9 ini di dalam tanda kurung. Sekarang, satu-satunya yang tersisa adalah mengubah nilai # Add one year to each age in the dictionary using comprehension new_d = {name: age + 1 for name, age in d.items()} print(new_d)5 dari kamus baru dengan menambahkan 1
Ini adalah proses berpikir saya yang biasa ketika saya menggunakan pemahaman kamus. Contoh ini sangat sederhana dan dengan pengalaman yang cukup, Anda dapat melakukannya hampir secara otomatis, tetapi setelah kode menjadi sedikit lebih rumit, ada baiknya untuk memikirkan dengan tepat seperti apa hasil akhir Anda dan bagaimana Anda dapat mencapainya
Selain itu, adalah ide yang bagus untuk menulis {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}_9 loop sebelumnya, pastikan itu berperilaku seperti yang Anda desain, dan kemudian tulis ulang menggunakan pemahaman kamus
Contoh Lebih Realistis
Oke, cukup dengan contoh sederhana yang tidak realistis. Dalam kehidupan nyata, kita mungkin perlu membuat beberapa kamus acak untuk tujuan pengujian atau hanya karena kita memerlukan beberapa keacakan untuk teknik statistik, tetapi sekarang kita akan menganalisis kumpulan data dunia nyata dari Kaggle dan menerapkan teknik kamus Python ini. Perhatikan bahwa kumpulan data asli telah dimodifikasi dengan menghapus string {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}4 dari kolom {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}5
Kami akan menggunakan kumpulan data yang berisi video game teratas di Metacritic pada tahun 1995-2021
from csv import reader # Open and read the dataset all_games = open("all_games.csv") all_games = reader(all_games) all_games = list(all_games)Kumpulan data ini berisi informasi berikut
- Nama
- Peron
- Tanggal rilis
- Ringkasan cerita
- Skor Meta
- Skor Pengguna
Katakanlah, kami tertarik untuk membuat kamus dengan nama sebagai kunci dan platform sebagai nilainya
Perhatikan bahwa setiap platform memiliki spasi sebelum namanya, jadi mari kita hapus. Itu bisa dilakukan dengan {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}_9 loop atau pemahaman kamus
# Using a for loop for name, platform in platform_dict.items(): platform_dict[name] = platform.strip()Di atas adalah salah satu cara menghilangkan spasi dari nilai. Kami menggunakan metode yang menghapus karakter awal dan akhir yang kami tentukan atau spasi putih jika tidak ada argumen yang diberikan. Sekarang coba tulis ulang kode menggunakan pemahaman kamus sebelum membaca jawabannya
{'Alex': 29, 'Katherine': 24, 'Jonathan': 22}_0Itu adalah cara yang jauh lebih bagus untuk menulis kode yang sama
Terkadang kita mungkin perlu mengekstrak setiap kolom dari kumpulan data, mengonversinya menjadi daftar, lalu menggunakan setiap elemen dari satu daftar sebagai kunci kamus dan setiap elemen dari daftar lain sebagai nilai kamus. Proses ini akan memungkinkan cara langsung untuk mengakses elemen kamus, memfilter, dan memanipulasinya. Ini Apakah mungkin?
{'Alex': 29, 'Katherine': 24, 'Jonathan': 22}_1Sekarang kita memiliki semua daftar yang berbeda, kita dapat membuat kamus dari dua di antaranya. Kami sudah memiliki kamus platform, tetapi sekarang mari kita ekstrak tahun rilisnya (bukan tanggalnya. ). Kami akan menggunakan fungsi yang memungkinkan iterasi pada beberapa iterable secara bersamaan
{'Alex': 29, 'Katherine': 24, 'Jonathan': 22}2 {'Alex': 29, 'Katherine': 24, 'Jonathan': 22}3Sekarang coba lakukan hal yang sama tetapi dengan pemahaman kamus sebelum melihat jawabannya
{'Alex': 29, 'Katherine': 24, 'Jonathan': 22}_4 {'Alex': 29, 'Katherine': 24, 'Jonathan': 22}5Seperti yang bisa kita lihat, pemahaman kamus dengan Python memungkinkan kode yang lebih pendek dan tidak terlalu rumit. Perhatikan bahwa kami menggunakan pemotongan string (mis. e. , {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}_9) untuk mengekstrak hanya tahun dari tanggal
Pernyataan Bersyarat dalam Pemahaman Kamus
Sekarang Anda harus dapat memahami logika dasar pemahaman kamus dengan Python. Jadi, mari kita sedikit memperumit masalah
Kita dapat menggunakan pernyataan bersyarat untuk memfilter beberapa informasi sebelum membuat kamus. Mari buat ulang kamus video game yang dirilis setelah 2014
{'Alex': 29, 'Katherine': 24, 'Jonathan': 22}6 {'Alex': 29, 'Katherine': 24, 'Jonathan': 22}7Dalam cuplikan kode di atas, kami menggunakan kembali kode yang sama tetapi menambahkan pernyataan bersyarat from csv import reader # Open and read the dataset all_games = open("all_games.csv") all_games = reader(all_games) all_games = list(all_games)0 untuk menerapkan filter. Kami ingin memfilter berdasarkan nilai sehingga kami mengekstrak tahun, mengonversi angka menjadi bilangan bulat, lalu membandingkannya dengan bilangan bulat 2014. Jika tahun sebelum 2014, maka elemen kamus tersebut tidak dimasukkan ke dalam kamus
Kita tentu saja dapat membuat logika menjadi lebih rumit dengan memperkenalkan operator logika (from csv import reader # Open and read the dataset all_games = open("all_games.csv") all_games = reader(all_games) all_games = list(all_games)1, from csv import reader # Open and read the dataset all_games = open("all_games.csv") all_games = reader(all_games) all_games = list(all_games)2, from csv import reader # Open and read the dataset all_games = open("all_games.csv") all_games = reader(all_games) all_games = list(all_games)3). Misalnya, jika kita ingin semua game yang dirilis antara 2012 dan 2018 (termasuk keduanya), maka kodenya adalah sebagai berikut
{'Alex': 29, 'Katherine': 24, 'Jonathan': 22}8 {'Alex': 29, 'Katherine': 24, 'Jonathan': 22}9Pada titik ini, kode menjadi agak rumit untuk dipahami jadi jika kita membutuhkan operator logis tambahan, lebih baik menggunakan loop standar {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9
Mari buat contoh lain, dan filter berdasarkan skor meta yang lebih rendah dari 25 atau lebih tinggi dari 97
Untuk berlatih, buat kamus dengan game dengan skor pengguna antara 6 dan 8 (inklusif). Pastikan juga bahwa nilai dalam kamus adalah from csv import reader # Open and read the dataset all_games = open("all_games.csv") all_games = reader(all_games) all_games = list(all_games)5 angka
Gunakan Kasus
Empat bagian berikutnya akan mendemonstrasikan berbagai kasus penggunaan pemahaman kamus
- Cara menggunakan pemahaman dalam kamus bersarang
- Cara mengurutkan kamus
- Cara meratakan kamus
- Cara menghitung frekuensi kata dalam sebuah string
Pemahaman Kamus Bersarang
Terkadang, kita perlu bekerja dengan kamus bersarang, mis. e. , saat kita memiliki kamus di dalam kamus lain. Pertama-tama, buat kamus bersarang
# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)2# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)3Ada cara untuk menulis ulang loop {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 di atas menggunakan pemahaman kamus. Lakukan untuk latihan
Agar tidak memperumit masalah, kami hanya akan menggunakan platform di nilai batin. Sangat sering, ini adalah format data yang dikirimkan kepada kami melalui API
# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)4# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)5Katakanlah kita ingin mengekstrak tahun dan mengubahnya menjadi bilangan bulat sambil mempertahankan format kamus bersarang yang sama. Salah satu cara melakukannya adalah dengan menggunakan ________2______9 loop
# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)6# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)7Tentu saja, dimungkinkan untuk menulis ulang {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 loop di atas menggunakan pemahaman kamus. Untuk menghindari kesalahan, sel kode di bawah ini akan membuat ulang daftar dan kamus bersarang sebelum menjalankan pemahaman kamus
# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)8# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)9# Dictionary to store new ages new_d = {} # Add one year to each age in the dictionary for name, age in d.items(): # .items() method displays dictionary keys and values as a list of tuple pairs (name and age in this case) new_d[name] = age + 1 print(new_d)7Loop {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}_9 di sini adalah loop {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 kedua, sedangkan loop {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 dalam adalah loop {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 pertama. Kode menjadi cukup rumit pada saat ini, jadi dalam banyak kasus, tidak ada gunanya terus mencoba menggunakan pemahaman kamus. Ingatlah bahwa salah satunya adalah keterbacaan
Menyortir Kamus dengan Pemahaman
Penggunaan lain dari pemahaman kamus di Python adalah penyortiran kamus. Misalnya, katakanlah kita ingin mengurutkan kamus dengan judul game dan tahun demi tahun dari tahun pertama hingga tahun terakhir? . )
{'Alex': 30, 'Katherine': 25, 'Jonathan': 23}1 {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}2Kami menggunakan fungsi # Dictionary to store video game platforms platform_dict = {} # Create dictionary of platforms for game in all_games[1:]: # Do not include the header name = game[0] platform = game[1] platform_dict[name] = platform # Print five items of the dictionary (need to transform it into a list before) print(list(platform_dict.items())[:5])_5 yang menerima argumen # Dictionary to store video game platforms platform_dict = {} # Create dictionary of platforms for game in all_games[1:]: # Do not include the header name = game[0] platform = game[1] platform_dict[name] = platform # Print five items of the dictionary (need to transform it into a list before) print(list(platform_dict.items())[:5])6 bahwa kami perlu memberi tahu fungsi elemen mana yang ingin kami urutkan. Dalam hal ini, kami memiliki dua opsi. urutkan pada kunci atau nilai kamus. Nilai berada di urutan kedua, jadi indeksnya harus 1, sedangkan untuk kunci adalah 0. Kunci biasanya diberikan ke fungsi # Dictionary to store video game platforms platform_dict = {} # Create dictionary of platforms for game in all_games[1:]: # Do not include the header name = game[0] platform = game[1] platform_dict[name] = platform # Print five items of the dictionary (need to transform it into a list before) print(list(platform_dict.items())[:5])_7 yang merupakan fungsi anonim yang sering digunakan dalam Python. Apakah menurut Anda mungkin untuk menerapkan {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 loop untuk mencapai hasil yang sama?
Meratakan Daftar Kamus
Terkadang kami menghadapi daftar kamus, dan kami menginginkan satu kamus tunggal. Itu juga bisa dilakukan dengan pemahaman kamus
{'Alex': 30, 'Katherine': 25, 'Jonathan': 23}3 {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}4Yang pasti, kita juga bisa menambahkan beberapa pernyataan bersyarat dalam kode di atas seperti yang kita lakukan untuk pemahaman kamus sebelumnya. Misalnya, di bawah ini, kami memfilter semua tahun yang bukan 1996
{'Alex': 30, 'Katherine': 25, 'Jonathan': 23}5 {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}6Apakah Anda dapat membuat ulang pemahaman kamus di atas dengan {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 loop?
Frekuensi Kata
Salah satu langkah dalam Natural Language Processing adalah menghitung kemunculan kata dalam sebuah teks. Cara alami untuk merepresentasikan data ini adalah dengan menggunakan kamus, di mana kuncinya adalah kata, dan nilainya adalah berapa kali kata ini muncul dalam teks. Ini juga merupakan pekerjaan untuk memahami kamus
{'Alex': 30, 'Katherine': 25, 'Jonathan': 23}7 {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}8Kami membutuhkan tiga baris kode jika kami menggunakan {'Alex': 30, 'Katherine': 25, 'Jonathan': 23}9 loop (tetapi coba buat ulang)
Membungkus
Ada begitu banyak cara kita dapat mengeksploitasi pemahaman kamus dengan Python untuk memperbaiki kode, sehingga akan membutuhkan terlalu banyak kertas untuk mencantumkan semuanya. Saya sarankan Anda mulai menggunakannya langsung setiap kali Anda melihat kemungkinannya (tetapi tetap ingat keterbacaannya) dan baca kode orang lain untuk mendapatkan ide tentang kasus penggunaan kode tersebut
Pada titik tertentu, akan sangat wajar untuk langsung menulis pemahaman kamus tetapi untuk mencapai titik ini Anda harus menulis kode, dan mengerjakan proyek. Membaca tutorial dan melakukan latihan kode sangat membantu untuk memahami konsepnya, tetapi proyek adalah pengubah permainan nyata dalam ilmu data atau karier pengkodean Anda
Dalam tutorial ini, kita telah belajar
- Apa pemahaman kamus dengan Python
- Cara membuat kamus menggunakan teknik ini
- Cara menggunakan pernyataan bersyarat dalam pemahaman kamus
- Apa itu pemahaman kamus bersarang
- Cara mengurutkan kamus
- Cara meratakan kamus
- Dan bagaimana cara menghitung kemunculan kata dalam sebuah string
Saya harap Anda telah belajar sesuatu yang baru hari ini. Jangan ragu untuk terhubung dengan saya di LinkedIn atau GitHub. Selamat mengkode
tutorial ilmu data tutorial python
Tentang Penulis
Artur Sannikov
Saya seorang mahasiswa Biologi Molekuler di Universitas Padua, Italia yang tertarik dengan bioinformatika dan analisis data