Dzięki wspaniałym ludziom z SO odkryłem możliwości oferowane przez collections.defaultdict, zwłaszcza w zakresie czytelności i szybkości. Z powodzeniem je wykorzystałem.
Teraz chciałbym zaimplementować trzy poziomy słowników, z których dwa najwyższe to, defaultdicta najniższy to int. Nie znajduję odpowiedniego sposobu, aby to zrobić. Oto moja próba:
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]
Teraz to działa, ale następujące, które są pożądane, nie:
d["key4"]["a1"] + 1
Podejrzewam, że powinienem był gdzieś zadeklarować, że drugi poziom defaultdictjest typowy int, ale nie znalazłem, gdzie ani jak to zrobić.
Powodem, dla którego używam defaultdictw pierwszej kolejności, jest uniknięcie konieczności inicjowania słownika dla każdego nowego klucza.
Masz bardziej elegancką sugestię?
Dzięki pythoneers!
multiprocessingjest zadowolony z wysyłania ich tam iz powrotem.