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, defaultdict
a 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 defaultdict
jest typowy int
, ale nie znalazłem, gdzie ani jak to zrobić.
Powodem, dla którego używam defaultdict
w pierwszej kolejności, jest uniknięcie konieczności inicjowania słownika dla każdego nowego klucza.
Masz bardziej elegancką sugestię?
Dzięki pythoneers!
multiprocessing
jest zadowolony z wysyłania ich tam iz powrotem.