Melaksanakan Dict Lalai Tertib
OrderedDict dan defaultdict ialah dua struktur data berguna daripada modul koleksi Python. OrderedDict mengekalkan susunan sisipan elemennya, manakala defaultdict menyediakan nilai lalai untuk kunci yang hilang. Menggabungkan fungsi ini menghasilkan dict lalai tersusun.
Untuk mencapai ini, kita boleh menggunakan versi resipi yang diubah suai daripada Stack Overflow:
<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 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>
Pelaksanaan ini menyokong semua ciri OrderedDict dan defaultdict, membolehkan anda membuat kamus tersusun dengan nilai lalai untuk kunci yang hilang.
Atas ialah kandungan terperinci Bagaimanakah anda boleh menggabungkan ciri OrderedDict dan defaultdict dalam Python untuk mencipta dict lalai yang dipesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!