Melaksanakan Dict Lalai Tertib
Seseorang mungkin mahu menggabungkan fungsi OrderedDict() dan defaultdict() daripada modul Koleksi Python ke buat dict lalai tertib. Gabungan ini akan membolehkan untuk mengekalkan kamus di mana kunci dipesan dan nilai lalai diberikan apabila mengakses kekunci yang tidak wujud.
Untuk mencapai ini, kami boleh menggunakan versi diubah suai resipi yang disediakan dalam komuniti Stack Overflow. Berikut ialah kodnya:
<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 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 # Override necessary methods for pickling def __reduce__(self): if self.default_factory is None: args = tuple() else: args = self.default_factory, return type(self), args, None, None, self.items() def copy(self): return self.__copy__() def __copy__(self): return type(self)(self.default_factory, self) def __deepcopy__(self, memo): import copy return type(self)(self.default_factory, copy.deepcopy(self.items())) def __repr__(self): return 'OrderedDefaultDict(%s, %s)' % (self.default_factory, OrderedDict.__repr__(self))</code>
Coretan kod ini menggabungkan kaedah __init__, membolehkan anda menentukan fungsi kilang lalai. Kaedah __missing__ mengendalikan akses kunci dan memberikan nilai lalai menggunakan fungsi kilang. Selain itu, pelbagai kaedah seperti __reduce__, copy(), __copy__(), __deepcopy__(), dan __repr__() ditakrifkan untuk penjerukan dan perwakilan yang betul bagi kamus tersuai ini.
Dengan menggunakan kelas DefaultOrderedDict ini, anda boleh bina kamus tersusun yang menyediakan nilai lalai untuk kunci yang hilang. Pendekatan ini menggabungkan faedah pengurusan kunci tersusun dan penetapan nilai dinamik.
Atas ialah kandungan terperinci Bagaimanakah anda melaksanakan perintah lalai dalam Python untuk mengekalkan susunan utama dan menetapkan nilai lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!