Rumah >pembangunan bahagian belakang >Tutorial Python >Defaultdict vs. Kamus Biasa: Bila dan Mengapa Gunakan Parameter `int` dan `list`?

Defaultdict vs. Kamus Biasa: Bila dan Mengapa Gunakan Parameter `int` dan `list`?

Susan Sarandon
Susan Sarandonasal
2024-12-06 21:19:12206semak imbas

Defaultdict vs. Regular Dictionary: When and Why Use `int` and `list` Parameters?

defaultdict vs. Regular Dictionary

Walaupun menyemak contoh dokumentasi Python, menjelaskan kehalusan kaedah defaultdict masih sukar difahami. Mari kita terokai contoh-contoh ini dengan lebih lanjut dan tafsirkan tujuan parameter int dan senarai.

Dalam contoh pertama:

from collections import defaultdict
s = 'mississippi'
d = defaultdict(int)
for k in s:
    d[k] += 1

Dict lalai mencipta pemetaan di mana setiap aksara dalam rentetan memetakan ke integer. Parameter int menunjukkan bahawa apabila aksara baharu ditemui dalam rentetan, nilai lalai yang digunakan ialah 0. Ini dilihat dalam output:

d.items()
# dict_items([('m', 1), ('i', 4), ('s', 4), ('p', 2)])

Dalam contoh kedua:

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)

Dikte lalai mencipta pemetaan di mana setiap kekunci (yang merupakan warna) dipetakan ke senarai. Parameter senarai menunjukkan bahawa apabila warna baharu ditemui, nilai lalai yang digunakan ialah senarai kosong. Ini dilihat dalam output:

d.items()
# [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

Oleh itu, parameter int dan senarai dalam defaultdict menentukan jenis objek lalai yang dicipta apabila kunci baharu diakses. Dalam contoh pertama, aksara baharu dalam rentetan memetakan kepada 0, dan dalam contoh kedua, warna baharu memetakan kepada senarai kosong.

Atas ialah kandungan terperinci Defaultdict vs. Kamus Biasa: Bila dan Mengapa Gunakan Parameter `int` dan `list`?. 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