Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh membuat kamus yang dipesan dengan nilai lalai dalam Python?

Bagaimanakah saya boleh membuat kamus yang dipesan dengan nilai lalai dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 03:37:30291semak imbas

How can I create an ordered dictionary with default values in Python?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn