Konversi enum ke kamus python

Dan enum seperti DicTestKey Anda (di Swift, ketik nama harus dimulai dengan huruf kapital), Anda dapat menghilangkan bagian penugasan di Swift terbaru

enum DicTestKey: String {
    case VALUE1
    case VALUE2
}


Kamus. Kunci harus dapat di-hash, dan semua enum tanpa nilai terkait dapat di-hash

Jadi, Anda dapat mendeklarasikan DicTestKey Anda seperti ini jika Anda mau

enum DicTestKey {
    case VALUE1
    case VALUE2
}
_

Diposting oleh

Konversi enum ke kamus python
OOPer

Menyalin ke clipboard

Bagikan postingan ini

Disalin ke Papan Klip

Setiap bahasa pemrograman harus menggunakan tipe string. Saat kita mengetik string di program kita, kesalahan ketik biasanya tidak bisa dihindari. Bagaimana kita bisa menghilangkan kesalahan yang mungkin kita buat selama pemrograman?

Pencacahan umumnya digunakan dalam bahasa pemrograman yang paling populer. Tentu saja, Python juga menyediakan Kelas Pencacahan yang fleksibel. Menggunakan pencacahan adalah cara pemrograman yang sangat baik. Ini membantu kita untuk mengikat sekumpulan nama simbolis dengan konstanta unik. Oleh karena itu, kita dapat dengan mudah menggunakannya untuk menghindari beberapa bug runtime yang disebabkan oleh kesalahan ketik

Definisi Khas

Foto oleh stepepb di Pixabay

Mari pertimbangkan kasus penggunaan yang sangat sederhana sekarang. Kami memiliki kamus yang terlihat seperti berikut

user = {
'name': 'Chris',
'age': 33,
'programming_language': 'Python'
}

Kemudian, kami ingin menguji apakah pengguna menyukai Python, dan mencetak beberapa keluaran berdasarkan hasilnya

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")

OKE. Tidak masalah. Saya pikir itu cukup sederhana sehingga saya tidak perlu menjelaskan kodenya. ) Sekarang, misalkan kita telah membuat salah ketik sebagai berikut. Ini bisa mengakibatkan bug run-time yang akan sulit ditemukan

Bug ini akan menghasilkan hasil — tidak ada yang menyukai Python. Kami tahu itu tidak benar, tentu saja, itu kesalahan. )

Solusi Dasar Menggunakan Pencacahan

Foto oleh stepepb di Pixabay

Yah, semua orang membuat kesalahan. Bagaimana kita bisa menggunakan pencacahan untuk menghindari kesalahan semacam ini? . Cukup impor kelas

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
_6 dan tentukan anggota enumerasi

from enum import Enumclass ProgrammingLanguage(Enum):
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 5

Kemudian, kami mendapat pencacahan dengan anggota tertentu. Kita dapat memasukkannya ke dalam kamus sebagai berikut

user = {
'name': 'Chris',
'age': 33,
'programming_language': ProgrammingLanguage.PYTHON
}
_

Kalau kita mau uji coba yang setara, bisa seperti ini

if user['programming_language'] == ProgrammingLanguage.PYTHON:
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")

Jadi, apa perbedaan antara menggunakan pencacahan dibandingkan dengan string biasa? . Dengan kata lain, sebagian besar alat IDE akan menyediakan pelengkapan otomatis. Jadi, kecil kemungkinan kita bisa salah ketik

Yang terpenting, juru bahasa Python akan membuat kesalahan jika kami melakukan kesalahan

Oleh karena itu, kode tidak akan dapat memenuhi jika ada salah ketik. Masalah yang terungkap sebelum runtime biasanya bukanlah masalah yang sebenarnya, tetapi merupakan bagian dari pemrograman. )

Akses Anggota Pencacahan

Foto oleh JESHOOTS-com di Pixabay

Baiklah, jika Anda telah memutuskan untuk menggunakan pencacahan saat diperlukan, saya kira Anda mungkin ingin tahu lebih banyak tentangnya. Senang untuk memperluas topik dalam artikel ini. Pertama-tama mari kita bicara tentang cara mengakses anggota pencacahan

Jika kami hanya mencetak anggota,

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
7 asli akan dicetak, yang tidak memberikan terlalu banyak informasi

Namun, jika kita menggunakan fungsi

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
_8, itu juga akan mencetak nilai anggota

Jika kita ingin mendapatkan nilai integer dari anggota, akses saja atribut

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
9 nya. Untuk kunci anggota, kita dapat menggunakan atribut
from enum import Enumclass ProgrammingLanguage(Enum):
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 5
0 untuk mengaksesnya

Contoh Kasus Penggunaan Perlu Mengakses Kunci Anggota

Petunjuk penggunaan mengakses kunci anggota adalah bahwa kita dapat memiliki string dari anggota pencacahan untuk penggunaan lebih lanjut. Misalnya, bagaimana jika kamus pengguna dibuang dari dokumen JSON?

user = {
'name': 'Chris',
'age': 33,
'programming_language': 'Python'
}

Jadi, kita dapat mengonversi string "Python" menjadi huruf besar dan kemudian membandingkannya dengan kunci anggota pencacahan

if user['programming_language'].upper() == ProgrammingLanguage.PYTHON.name:

Anda mungkin bertanya mengapa kita harus menggunakan huruf besar semua untuk kunci anggota. Jawaban singkatnya adalah Anda tidak perlu melakukannya. Namun, disarankan untuk menggunakan semua huruf besar saat kita mendefinisikan "konstanta". Semua anggota dalam pencacahan dianggap konstanta. Merupakan cara yang baik untuk mengikuti standar PEP

Integrasikan dengan Struktur Data

Foto oleh fotofan1 di Pixabay

Anda mungkin menyadari bahwa pencacahan cukup terstruktur dan terbatas. Jadi, itu pasti bisa berintegrasi dengan berbagai jenis struktur data. Di sini saya akan menunjukkan dua contoh untuk daftar dan kamus Python

Ubah Pencacahan menjadi Daftar

Kita dapat mengulangi pencacahan menggunakan for loop

for lang in ProgrammingLanguage:
print(lang)

Oleh karena itu, kita dapat dengan mudah menggunakan pemahaman daftar untuk mengubahnya menjadi daftar

[lang.name for lang in ProgrammingLanguage]

Sebenarnya, ada cara lain untuk melakukan ini. Ini tidak mudah tetapi membantu untuk memahami struktur pencacahan. Artinya, kita bisa menggunakan atribut sihir untuk mendapatkan semua detail anggota

ProgrammingLanguage.__members__

Jenis

from enum import Enumclass ProgrammingLanguage(Enum):
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 5
_1 pada dasarnya adalah kamus hanya-baca. Jadi, kita cukup mendapatkan daftar kunci dengan memanggil fungsi
from enum import Enumclass ProgrammingLanguage(Enum):
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 5
2 nya

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
0

Hashable sebagai Kunci Kamus

Anggota enumerasi dapat di-hash, dan itu artinya kita dapat menggunakannya sebagai kunci kamus yang valid

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
1

Ini akan sangat membantu karena juga dapat mencegah kita membuat kesalahan ketik untuk kunci kamus. Saat kita ingin mendapatkan nilai dari kuncinya di kamus, kita juga akan menggunakan anggota pencacahan

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
2

Pencacahan dengan Nilai String

Foto oleh StockSnap di Pixabay

Selama ini semua contoh di atas menggunakan bilangan bulat sebagai nilai pencacahannya. Bahkan, kita bisa menggunakan string sebagai nilainya. Ini memberikan lebih banyak fleksibilitas selama penggunaan. Untuk memiliki pencacahan berbasis string, cukup tentukan anggota dengan string

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
_3

Oleh karena itu, kami selalu dapat mengakses nilai string anggota menggunakan atribut

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
9

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
_4

Perlu diperhatikan bahwa kita masih tidak dapat menggunakan anggota pencacahan untuk dibandingkan dengan string, karena jenisnya berbeda. Hasilnya akan selalu salah

Sebaliknya, kita perlu menggunakan nilai anggota

Cara termudah untuk Mendefinisikan Enuermation

Foto oleh InspiredImages di Pixabay

Terakhir, cara paling "Pythonic" untuk mendefinisikan pencacahan bisa jauh lebih mudah. Kami bahkan tidak perlu menulis kelas pencacahan. Kelas

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
_6 memiliki konstruktor yang dapat mengambil dua parameter dan menghasilkan pencacahan

if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
5

Pada baris kode di atas, argumen pertama mendefinisikan nama kelas pencacahan. Kemudian, argumen kedua adalah string yang berisi semua kunci anggota yang dipisahkan oleh koma, spasi, atau keduanya

Di sini kami tidak menetapkan setiap anggota dengan bilangan bulat secara eksplisit, anggota akan ditetapkan secara otomatis dengan bilangan bulat inkremental otomatis mulai dari 1

Setelah itu, kita mendapatkan pencacahan yang sama dengan menulis kelas secara eksplisit

Ringkasan

Foto oleh 27707 di Pixabay

Pada artikel ini, saya telah memperkenalkan kelas pencacahan dengan Python. Kita dapat menggunakannya untuk mengikat nama simbolik ke nilai konstanta yang unik. Dengan melakukan itu, kita dapat memanfaatkan fitur pelengkapan otomatis yang tersedia di sebagian besar IDE, serta mencegah kesalahan runtime yang disebabkan oleh kesalahan ketik.

Ada juga beberapa fitur mewah lainnya yang disediakan enumerasi Python, seperti digunakan sebagai kunci kamus. Selain itu, kita dapat menggunakan konstruktor kelas "Enum" untuk dengan mudah mendefinisikan enumerasi tanpa menulis kelas secara eksplisit, bagaimana "Pythonic" itu

Bergabunglah dengan Medium dengan tautan referensi saya — Christopher Tao

Sebagai anggota Medium, sebagian dari biaya keanggotaan Anda diberikan kepada penulis yang Anda baca, dan Anda mendapatkan akses penuh ke setiap cerita…

sedang. com

Jika Anda merasa artikel saya bermanfaat, harap pertimbangkan untuk bergabung dengan Keanggotaan Medium untuk mendukung saya dan ribuan penulis lainnya. (Klik tautan di atas)

Bisakah enum menjadi python kunci dict?

Anggota enumerasi dapat di-hash, dan itu berarti kita dapat menggunakannya sebagai kunci kamus yang valid .

Apa itu enum dalam kamus python?

Enum digunakan untuk membuat sekumpulan konstanta terkait . Kamus digunakan untuk menyimpan nilai data dalam kunci. pasangan nilai. Enum lebih mirip dengan array. Kamus tidak mengizinkan duplikat.

Apa perbedaan antara enum dan kamus di python?

Kamus menyimpan kumpulan nilai yang tidak diurutkan dari jenis yang sama, yang dapat direferensikan dan dicari melalui pengidentifikasi unik (juga dikenal sebagai kunci). Enumerasi menentukan tipe umum untuk sekelompok nilai terkait dan memungkinkan Anda bekerja dengan nilai tersebut dengan cara yang aman untuk tipe dalam kode Anda

Bagaimana cara membuat enum dari dict python?

Gunakan API fungsional untuk membuat enum dari kamus , e. g. Ukuran = Enum('Ukuran', my_dict). Argumen pertama yang kami berikan ke kelas Enum adalah nama pencacahan, dan yang kedua - sumber nama dan nilai anggota pencacahan. Disalin.