Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membuat Dict Lalai Tertib dalam Python?

Bagaimana untuk Membuat Dict Lalai Tertib dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-29 18:28:02568semak imbas

How to Create an Ordered Default Dict in Python?

Melaksanakan Ordered, Default Dict

Modul koleksi terbina dalam dalam Python menyediakan OrderedDict dan defaultdict, setiap satu menawarkan fungsi yang berbeza. OrderedDict mengekalkan susunan sisipan elemennya, manakala defaultdict secara automatik menjana nilai lalai untuk kekunci yang hilang berdasarkan fungsi kilang yang ditentukan.

Menggabungkan Kuasa Kedua-duanya

Menggabungkan keupayaan kedua-dua struktur data, seseorang boleh membuat dict tersusun dan lalai yang mengekalkan susunan elemennya dan memulakan kunci yang hilang dengan nilai lalai. Ini boleh dicapai dengan melanjutkan kelas OrderedDict.

Kelas Tersuai: DefaultOrderedDict

Kelas tersuai DefaultOrderedDict berikut mewarisi daripada OrderedDict dan menambahkan fungsi untuk mengendalikan kunci yang hilang:

<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</code>

Penggunaan

Kelas ini boleh digunakan dengan cara yang sama seperti OrderedDict biasa:

<code class="python">ordered_default_dict = DefaultOrderedDict(lambda: 0)
ordered_default_dict['key1'] = 1
ordered_default_dict['key2'] = 2</code>

Walau bagaimanapun, jika kunci adalah tidak hadir, nilai lalai daripada fungsi kilang dijana:

<code class="python">print(ordered_default_dict['missing_key'])  # Output: 0</code>

Atas ialah kandungan terperinci Bagaimana untuk Membuat Dict Lalai Tertib 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