Modul koleksi Python mempunyai ciri yang dipanggil "Namedtuple", "Namedtuple" ialah tupel dengan elemen bernama untuk menjadikan kod lebih ekspresif. Sama seperti kamus dalam Python, "Namedtuple" membenarkan kami mengakses elemen menggunakan ahli tupel dan bukannya indeks.
Modul koleksi Python mempunyai ciri yang dipanggil "Namedtuple", "Namedtuple" ialah tupel dengan elemen bernama untuk menjadikan kod lebih ekspresif. Sama seperti kamus dalam Python, "Namedtuple" membenarkan kami mengakses elemen menggunakan ahli tupel dan bukannya indeks.
Untuk mencipta tuple bernama kita perlu menggunakan fungsi "namedtuple" dari modul koleksi.
from collections import namedtuple # Define a employee tuple that has fields id, name and location. Employee = namedtuple ('Employee', 'id name location') # Create instances of Employee employee1 = Employee (id=10, name='John Doe', location='Atlanta') employee2 = Employee (id=11, name='Mick', location='Dallas')
"Namedtuple" menyediakan mekanisme dwi untuk akses elemen. Pertama, elemen boleh diakses melalui nama atribut, dan mekanisme kedua menggunakan pengindeksan berangka tradisional.
print(f"{employee1.name} - {employee1.location}") # John Doe - Atlanta print(f"{employee2.name} - {employee2.location}") # Mick – Dallas
Elemen juga boleh diakses menggunakan indeks berangka.
print(f"{employee1[1]} - {employee1[2]}") # John Doe - Atlanta print(f"{employee2[1]} - {employee2[2]}") # Mick – Dallas
Ketidakbolehubah ialah sifat asas "Namedtuples", yang diwarisi daripada tupel biasa. Ini bermakna apabila nilai medan ditetapkan semasa penciptaan, ia tidak boleh diubah suai.
try: employee1.name = 'David' except AttributeError as e: print(f"AttributeError: {e}") # AttributeError: can't set attribute
"Namedtuple" bukan sahaja menyediakan cara yang bersih dan boleh dibaca untuk menstruktur data, tetapi juga menyediakan beberapa kaedah berguna yang meningkatkan fungsi "Namedtuple".
a) _asdict(): Kaedah _asdict() mengembalikan tupel yang dinamakan dalam bentuk kamus, menyediakan cara yang mudah untuk menukar "Namedtuples" kepada format yang serasi dengan struktur data lain.
employee1._asdict() # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
b) _replace(): Kaedah _replace() mencipta contoh baharu "Namedtuple" dengan medan yang ditentukan digantikan dengan nilai baharu. Pendekatan ini adalah penting untuk mengekalkan kebolehubahan sambil membenarkan pengubahsuaian.
employee1_modified = employee1._replace(location='DFW') employee1_modified # Employee(id=10, name='John Doe', location='DFW')
c) _make(): Kaedah _make(iterable) mencipta instance baharu "namedtuple" daripada objek iterable. Sebagai contoh, kita boleh mencipta Namedtuple daripada senarai menggunakan kaedah _make().
employee_list = [21, 'Bob','Gallup'] Employee._make(employee_list) # Employee(id=21, name='Bob', location='Gallup')
Melalui proses membongkar, "Namedtuples" Python membolehkan anda menetapkan nilainya kepada pembolehubah individu dalam satu pernyataan ringkas.
id, name, location = employee1 print(f"id: {id}, name: {name}, location:{location}")
Tukar "Namedtuples" kepada struktur data yang berbeza
Anda boleh menggunakan list() constructor untuk menukar bernama tuples kepada senarai. Berikut ialah contoh:
list(employee1) # [10, 'John Doe', 'Atlanta']
Anda boleh menukar tuple bernama kepada kamus menggunakan kaedah "_asdict()", yang mengembalikan OrderedDict yang boleh anda tukar kepada kamus biasa. Berikut ialah contoh:
dict(employee1._asdict()) # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
Kebolehbacaan: "Namedtuples" menjadikan kod lebih mudah dibaca dengan memberikan nama yang bermakna kepada elemen, dengan itu menghapuskan kerumitan keperluan akses berasaskan indeks.
Mutasi: Seperti tupel biasa, "Namedtuples" tidak boleh diubah. Setelah dibuat, nilainya tidak boleh diubah.
Kecekapan Memori: "Namedtuples" adalah cekap ingatan, mengambil lebih sedikit ruang daripada kelas yang setara. Adalah penting untuk ambil perhatian bahawa kecekapan memori yang diperoleh dengan Namedtuples adalah lebih biasa dalam senario yang melibatkan sebilangan besar kejadian atau apabila bekerja dengan set data yang besar.
Struktur Data Ringan: Bagus untuk mencipta kelas mudah tanpa kaedah tersuai.
Storan Data: Mudah untuk menyimpan data berstruktur, terutamanya apabila kelas lengkap tidak diperlukan.
Rekod API dan pangkalan data: Digunakan untuk mewakili rekod yang dikembalikan daripada pangkalan data atau data yang diterima daripada API.
"Namedtuple" dalam Python sesuai untuk senario yang memerlukan struktur ringkas, data tidak berubah dengan medan bernama, seperti
Tetapan Konfigurasi: Gunakan "Namedtuple" untuk mewakili tetapan konfigurasi dengan medan bernama untuk kejelasan dan kemudahan penggunaan.
Rekod pangkalan data: "Namedtuple" boleh mewakili rekod pangkalan data, menjadikannya jelas medan yang sepadan dengan lajur dalam jadual.
Penghuraian baris arahan: Gunakan "Namedtuple" untuk menyimpan parameter baris arahan yang dihuraikan, menyediakan struktur yang jelas untuk parameter input.
Pemalar Dinamakan: "Namedtuple" boleh digunakan untuk mewakili pemalar bernama dalam kod, menyediakan cara yang jelas dan boleh dibaca untuk mentakrifkan nilai pemalar.
"Namedtuples" cemerlang dalam senario ini dengan memberikan kejelasan, kebolehbacaan dan ketakbolehubah, menjadikannya alat yang berharga untuk data berstruktur ringkas.
Atas ialah kandungan terperinci Tingkatkan kejelasan kod dengan Python bernama tupel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!