Mengakses Nilai Pembolehubah mengikut Nama Rentetan
Untuk banyak senario, carian pembolehubah berasaskan rentetan boleh dicapai menggunakan kamus. Begini caranya:
get_ext = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']}
Sekarang, anda boleh mendapatkan semula senarai yang diingini dengan input rentetan:
get_ext['audio'] # ['mp3', 'wav']
Jika anda lebih suka menggunakan fungsi, anda boleh menetapkan kaedah get kamus atau kaedah pengambilan itemnya (__getitem__) kepadanya:
get_ext = get_ext.get get_ext('video') # ['mp4', 'mkv']
Menetapkan kepada get_ext.get menyediakan lalai tingkah laku mengembalikan Tiada untuk kunci yang tidak diketahui. Sebaliknya, untuk KeyError, tetapkan kepada get_ext.__getitem__.
Sebagai alternatif, anda boleh membungkus kamus di dalam fungsi untuk memberikan nilai lalai tersuai:
def get_ext(file_type): types = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} return types.get(file_type, [])
Untuk mengoptimumkan persediaan, anda boleh tentukan kelas dengan kaedah panggilan untuk mengendalikan carian:
class get_ext(object): def __init__(self): self.types = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} def __call__(self, file_type): return self.types.get(file_type, [])
Pendekatan ini meningkatkan kecekapan dengan mencipta kamus jenis sekali sahaja dan membolehkan kemas kini dinamik:
get_ext = get_ext() get_ext.types['binary'] = ['bin', 'exe'] get_ext('binary') # ['bin', 'exe']
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Nilai Pembolehubah Menggunakan Nama Rentetan mereka dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!