defaultdict bagus ketika nilai defaultnya statis, seperti daftar baru, tetapi tidak terlalu banyak jika itu dinamis.
Sebagai contoh, saya perlu kamus untuk memetakan string ke int unik. defaultdict(int)akan selalu menggunakan 0 untuk nilai default. Juga,defaultdict(intGen()) selalu menghasilkan 1.
Sebagai gantinya, saya menggunakan dict biasa:
nextID = intGen()
myDict = {}
for lots of complicated stuff:
#stuff that generates unpredictable, possibly already seen str
strID = myDict.setdefault(myStr, nextID())
Catatan yang dict.get(key, nextID())tidak mencukupi karena saya harus dapat merujuk ke nilai-nilai ini nanti.
intGen adalah kelas kecil yang saya bangun yang secara otomatis menambah int dan mengembalikan nilainya:
class intGen:
def __init__(self):
self.i = 0
def __call__(self):
self.i += 1
return self.i
Jika seseorang memiliki cara untuk melakukan ini dengan defaultdictsaya ingin melihatnya.