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 defaultdictdan 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 defaultdictadalah tipe int, tetapi saya tidak menemukan di mana atau bagaimana melakukannya.
Alasan saya menggunakan defaultdictdi tempat pertama adalah untuk menghindari keharusan menginisialisasi kamus untuk setiap kunci baru.
Ada saran yang lebih elegan?
Terima kasih pythoneers!
multiprocessingtidak senang mengirim ini bolak-balik.