Menggabungkan OrderedDict dan defaultdict untuk Ordered Default Dict
OrderedDict dan defaultdict ialah dua struktur data yang berkuasa daripada modul koleksi Python. OrderedDict mengekalkan susunan elemennya, manakala defaultdict menyediakan nilai lalai untuk kunci yang hilang. Walau bagaimanapun, menggabungkan ciri-ciri ini dalam satu struktur data boleh mencabar.
Pelaksanaan Tersuai menggunakan DefaultOrderedDict
Satu penyelesaian yang mungkin adalah untuk mencipta kelas tersuai dipanggil DefaultOrderedDict yang diwarisi daripada OrderedDict dan menambah fungsi nilai lalai. Berikut ialah pelaksanaan yang diilhamkan oleh jawapan Stack Overflow:
<code class="python">from collections import OrderedDict, Callable class DefaultOrderedDict(OrderedDict): # Source: http://stackoverflow.com/a/6190500/562769 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 # Override __getitem__ to handle missing keys def __getitem__(self, key): try: return OrderedDict.__getitem__(self, key) except KeyError: return self.__missing__(key) # Raise KeyError if no default factory is provided def __missing__(self, key): if self.default_factory is None: raise KeyError(key) self[key] = value = self.default_factory() return value # ... (additional methods and overrides for copy, deepcopy, and repr)</code>
Kelas DefaultOrderedDict ini menggabungkan kefungsian OrderedDict dan defaultdict, membenarkan akses tersusun kepada elemen dan menyediakan nilai lalai untuk kekunci yang hilang.
Atas ialah kandungan terperinci Bagaimanakah saya boleh membuat kamus yang dipesan dengan nilai lalai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!