Gunakan kamus alih-alih if-else python

Kamus Python adalah bagian yang berguna dari bahasa ini. Selain memiliki kemampuan untuk menyimpan kunci dan nilai, Anda juga dapat menggunakan metode kamus untuk memanipulasi nilai tersebut, dan Anda dapat menggunakan kamus untuk menulis kode yang lebih ringkas

Gunakan get() dan setdefault() dengan Kamus

Mencoba mengakses kunci kamus yang tidak ada akan menghasilkan kesalahan KeyError, sehingga programmer sering menulis kode unpythonic untuk menghindari situasi seperti ini

>>> # Unpythonic Example >>> workDetails = {} >>> if 'hours' in workDetails: .. hoursWorked = workDetails['hours'] .. else: .. hoursWorked = 0 # Default to 0 if the 'hours' key doesn't exist. ... >>> hoursWorked 0

Pola ini sering terjadi sehingga kamus memiliki metode get() yang memungkinkan Anda menentukan nilai default untuk dikembalikan saat kunci tidak ada di kamus. Kode berikut setara dengan contoh sebelumnya, tetapi pythonic

>>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 0_

Jika Anda mendapati diri Anda menulis pernyataan if yang memeriksa apakah kunci ada dan memberikan nilai default saat kunci tidak ada, gunakan metode get() sebagai gantinya

Sebaliknya, Anda mungkin ingin menyetel nilai default jika kunci tidak ada. Misalnya, jika kamus di >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 00 tidak memiliki kunci >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 01, maka instruksi >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 02 akan menghasilkan kesalahan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 03. Anda mungkin ingin menambahkan kode yang memeriksa ketidakhadiran kunci dan menetapkan nilai default

>>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 10_

Contoh sebelumnya adalah unpythonic. Karena pola ini juga umum, kamus memiliki metode setdefault() yang lebih pythonic. Kode berikut setara dengan contoh sebelumnya

>>> # Pythonic Example >>> workDetails = {} >>> workDetails.setdefault('hours', 0) # Does nothing if 'hours' exists. 0 >>> workDetails['hours'] += 10 >>> workDetails['hours'] 10

Jika Anda menemukan diri Anda menulis pernyataan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 0_5 yang memeriksa apakah ada kunci dalam kamus dan menetapkan nilai default jika kunci tidak ada, gunakan metode setdefault() sebagai gantinya

Python Menggunakan Kamus Alih-alih Pernyataan Switch

Bahasa seperti Java memiliki pernyataan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 0_7, yang merupakan sejenis pernyataan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 08 yang menjalankan kode berdasarkan nilai variabel tunggal atau ekspresi. Python tidak memiliki pernyataan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 0_7, tetapi pernyataan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 07 mirip dengan kode Python berikut, yang menetapkan variabel >>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 101 berdasarkan nilai variabel >>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 102

>>> # Unpythonic Example if season == 'Winter': holiday = 'Christmas' elif season == 'Spring': holiday = 'Easter' elif season == 'Summer': holiday = 'American Independence Day' elif season == 'Fall': holiday = 'Halloween' else: holiday = 'Personal day off'

Menangani kode dengan menggunakan pernyataan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 0_5 untuk meniru pernyataan >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 07 tidak bersifat pitonik. Secara default, pernyataan Java >>> # Pythonic Example >>> workDetails = {} >>> hoursWorked = workDetails.get('hours', 0) >>> hoursWorked 07 memiliki "fall-through" yang mengharuskan setiap blok diakhiri dengan pernyataan >>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 106. Jika tidak, eksekusi berlanjut ke blok berikutnya. Lupa menambahkan pernyataan >>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 10_6 ini adalah sumber bug yang umum. Namun, semua pernyataan >>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 10_8 dalam contoh Python kita tidak jauh lebih baik karena bisa terlalu bertele-tele. Beberapa programmer Python lebih suka mengatur nilai kamus daripada menggunakan pernyataan >>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 108. Kode ringkas dan pythonic berikut setara dengan contoh sebelumnya

>>> # Pythonic Example holiday = {'Winter': 'Christmas', 'Spring': 'Easter', 'Summer': 'American Independence Day', 'Fall': 'Halloween'}.get(season, 'Personal day off')

Kode ini hanyalah pernyataan penugasan tunggal. Nilai yang disimpan di >>> # Unpythonic Example >>> workDetails = {} >>> if 'hoursWorked' not in workDetails: .. workDetails['hours'] = 0 ... >>> workDetails['hours'] += 10 >>> workDetails['hours'] 101 adalah nilai kembalian dari pemanggilan metode get(), yang mengembalikan nilai untuk kunci yang diatur ke musim. Jika kunci musim tidak ada, maka get() mengembalikan >>> # Pythonic Example >>> workDetails = {} >>> workDetails.setdefault('hours', 0) # Does nothing if 'hours' exists. 0 >>> workDetails['hours'] += 10 >>> workDetails['hours'] 103. Menggunakan kamus akan menghasilkan kode yang lebih ringkas, tetapi juga dapat membuat kode Anda lebih sulit dibaca. Terserah Anda apakah akan menggunakan konvensi ini atau tidak

Bisakah Anda menggunakan == pada kamus dengan Python?

Menurut dokumen python, Anda memang dapat menggunakan operator == pada kamus .

Apakah ada manfaat menggunakan kamus di atas daftar?

Lebih efisien menggunakan kamus untuk pencarian elemen karena lebih cepat daripada daftar dan membutuhkan waktu lebih sedikit untuk menelusuri . Selain itu, daftar menyimpan urutan elemen sedangkan kamus tidak. Jadi, sebaiknya gunakan struktur data daftar saat Anda memperhatikan urutan elemen data.

Apa yang dict {} lakukan dengan Python?

Fungsi dict() membuat kamus . Kamus adalah koleksi yang tidak terurut, dapat diubah, dan diindeks.

Postingan terbaru

LIHAT SEMUA