Selain itu, terdapat satu lagi kaedah pelaksanaan AutoVivification, iaitu membebankan secara langsung __missing__ kaedah ajaib dict. Anggap ia sebagai lanjutan.
class AutoVivification(dict):
"""Implementation of perl's autovivification feature."""
def __missing__(self, key):
value = self[key] = type(self)()
return value
Satu lagi, versi selepas Python 2.5 menambah jenis collections.defaultdict, yang boleh menyesuaikan jenis dict yang lebih berskala. Dokumen menyatakan bahawa prinsip pelaksanaan adalah untuk membebankan kaedah __missing__ terlebih dahulu. AutoVivification juga boleh dinyatakan seperti ini:
defaultdict membina jenis dict yang parameter pertamanya ialah default_factory apabila __missing__ dipanggil, nilai pulangan dibina menggunakan default_factory. Lagi contoh lalai
Anda boleh melaksanakan struktur ini sendiri.
Dalam contoh berikut, AutoVivification mewarisi daripada dict
Kita boleh menggunakan AutoVivification seperti ini:
Output:
Selain itu, terdapat satu lagi kaedah pelaksanaan AutoVivification, iaitu membebankan secara langsung
__missing__
kaedah ajaib dict. Anggap ia sebagai lanjutan.Satu lagi, versi selepas Python 2.5 menambah jenis
collections.defaultdict
, yang boleh menyesuaikan jenis dict yang lebih berskala. Dokumenmenyatakan bahawa prinsip pelaksanaan adalah untuk membebankan kaedah
__missing__
terlebih dahulu. AutoVivification juga boleh dinyatakan seperti ini:defaultdict membina jenis dict yang parameter pertamanya ialah default_factory apabila
__missing__
dipanggil, nilai pulangan dibina menggunakan default_factory.Lagi contoh lalai
Saya akan melampirkan penggunaan pakej defaultdict:
Output:
Dengan cara ini anda boleh mencapai kesan yang diingini,
Tambahan:
defaultdict() menerima parameter lalai, yang boleh menjadi nama jenis atau mana-mana fungsi boleh panggil tanpa parameter
Ini sangat berguna
Output: