Bagaimana untuk Membuat Dict Lalai Tertib dalam Python?

Linda Hamilton
Lepaskan: 2024-10-29 18:28:02
asal
516 orang telah melayarinya

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

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

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

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!

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!