Berkat beberapa orang hebat di SO, saya menemukan kemungkinan yang ditawarkan oleh collections.defaultdict
, terutama dalam keterbacaan dan kecepatan. Saya telah menggunakan mereka dengan sukses.
Sekarang saya ingin mengimplementasikan tiga tingkat kamus, dua yang teratas defaultdict
dan yang paling rendah int
. Saya tidak menemukan cara yang tepat untuk melakukan ini. Ini usaha saya:
from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
("key2", {"a1":32, "a2":55}),
("key3", {"a1":43, "a2":44})]
for i in a:
d[i[0]] = i[1]
Sekarang ini berfungsi, tetapi yang berikut, yang merupakan perilaku yang diinginkan, tidak:
d["key4"]["a1"] + 1
Saya menduga bahwa saya seharusnya menyatakan di suatu tempat bahwa tingkat kedua defaultdict
adalah tipe int
, tetapi saya tidak menemukan di mana atau bagaimana melakukannya.
Alasan saya menggunakan defaultdict
di tempat pertama adalah untuk menghindari keharusan menginisialisasi kamus untuk setiap kunci baru.
Ada saran yang lebih elegan?
Terima kasih pythoneers!
multiprocessing
tidak senang mengirim ini bolak-balik.