Collections.defaultdict vs. Regular Dict: Understanding the Distinction
Tidak seperti kamus Python konvensional yang menimbulkan KeyError untuk kekunci yang hilang, defaultdict menawarkan kelainan yang unik. Ia secara automatik memulakan kunci yang tidak wujud dengan nilai lalai, ditentukan oleh objek "boleh dipanggil" yang ditentukan pengguna. Untuk memahami sepenuhnya fungsinya, mari kita mendalami sintaks dan mekaniknya.
Dalam contoh pertama yang diberikan dalam soalan:
>>> from collections import defaultdict >>> s = 'mississippi' >>> d = defaultdict(int) >>> for k in s: ... d[k] += 1 ... >>> d.items() dict_items([('m', 1), ('i', 4), ('s', 4), ('p', 2)])
Kami menggunakan defaultdict dan menentukan int sebagai objek boleh panggil. Semasa kita melelar melalui rentetan s, defaultdict secara automatik mencipta kunci yang hilang dengan menggunakan int(). Fungsi ini mengembalikan objek integer yang dimulakan kepada 0. Akibatnya, setiap huruf dalam s menjadi kunci dalam kamus d yang terhasil, dengan nilai sepadannya ialah frekuensi kejadiannya.
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) ... >>> d.items() [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
Kami menggunakan defaultdict sekali lagi dan lulus senarai sebagai objek boleh panggil. Kali ini, kunci yang tidak wujud dimulakan menggunakan list(). Sambil kita mengulangi senarai tuple s, lalai memastikan bahawa setiap warna unik diwakili sebagai kunci. Nilai yang sepadan ialah senarai yang menyimpan frekuensi bagi setiap penampilan warna.
Dengan menggunakan defaultdict, kami boleh mengendalikan kamus dengan kekunci hilang dengan mudah, mengelakkan kemungkinan pengecualian KeyError dan memudahkan kod kami.
Atas ialah kandungan terperinci `defaultdict` vs. `dict` biasa dalam Python: Bilakah Anda Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!