Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membuat Dict Lalai Tertib dalam Python?
Melaksanakan Ordered, Default Dict
Modul koleksi terbina dalam dalam Python menyediakan OrderedDict dan defaultdict, setiap satu menawarkan fungsi yang berbeza. OrderedDict mengekalkan susunan sisipan elemennya, manakala defaultdict secara automatik menjana nilai lalai untuk kekunci yang hilang berdasarkan fungsi kilang yang ditentukan.
Menggabungkan Kuasa Kedua-duanya
Menggabungkan keupayaan kedua-dua struktur data, seseorang boleh membuat dict tersusun dan lalai yang mengekalkan susunan elemennya dan memulakan kunci yang hilang dengan nilai lalai. Ini boleh dicapai dengan melanjutkan kelas OrderedDict.
Kelas Tersuai: DefaultOrderedDict
Kelas tersuai DefaultOrderedDict berikut mewarisi daripada OrderedDict dan menambahkan fungsi untuk mengendalikan kunci yang hilang:
<code class="python">from collections import OrderedDict, Callable class DefaultOrderedDict(OrderedDict): def __init__(self, default_factory=None, *a, **kw): if (default_factory is not None and not isinstance(default_factory, Callable)): raise TypeError('first argument must be callable') OrderedDict.__init__(self, *a, **kw) self.default_factory = default_factory def __getitem__(self, key): try: return OrderedDict.__getitem__(self, key) except KeyError: return self.__missing__(key) def __missing__(self, key): if self.default_factory is None: raise KeyError(key) self[key] = value = self.default_factory() return value</code>
Penggunaan
Kelas ini boleh digunakan dengan cara yang sama seperti OrderedDict biasa:
<code class="python">ordered_default_dict = DefaultOrderedDict(lambda: 0) ordered_default_dict['key1'] = 1 ordered_default_dict['key2'] = 2</code>
Walau bagaimanapun, jika kunci adalah tidak hadir, nilai lalai daripada fungsi kilang dijana:
<code class="python">print(ordered_default_dict['missing_key']) # Output: 0</code>
Atas ialah kandungan terperinci Bagaimana untuk Membuat Dict Lalai Tertib dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!