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

Linda Hamilton
Lepaskan: 2024-10-28 03:37:30
asal
294 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!