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
0
0 tidak memiliki kunci
>>> # Pythonic Example
>>> workDetails = {}
>>> hoursWorked = workDetails.get('hours', 0)
>>> hoursWorked
0
1, maka instruksi
>>> # Pythonic Example
>>> workDetails = {}
>>> hoursWorked = workDetails.get('hours', 0)
>>> hoursWorked
0
2 akan menghasilkan kesalahan
>>> # Pythonic Example
>>> workDetails = {}
>>> hoursWorked = workDetails.get('hours', 0)
>>> hoursWorked
0
3. 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
0
8 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
0
7 mirip dengan kode Python berikut, yang menetapkan variabel
>>> # Unpythonic Example
>>> workDetails = {}
>>> if 'hoursWorked' not in workDetails:
..     workDetails['hours'] = 0
...
>>> workDetails['hours'] += 10
>>> workDetails['hours']
10
1 berdasarkan nilai variabel
>>> # Unpythonic Example
>>> workDetails = {}
>>> if 'hoursWorked' not in workDetails:
..     workDetails['hours'] = 0
...
>>> workDetails['hours'] += 10
>>> workDetails['hours']
10
2

>>> # 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
0
7 tidak bersifat pitonik. Secara default, pernyataan Java
>>> # Pythonic Example
>>> workDetails = {}
>>> hoursWorked = workDetails.get('hours', 0)
>>> hoursWorked
0
7 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']
10
6. 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']
10
8. 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']
10
1 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']
10
3. 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.