Благодаря некоторым замечательным людям на SO, я обнаружил возможности, предлагаемые collections.defaultdict
, в частности, в области читабельности и скорости. Я успешно использовал их.
Теперь я хотел бы реализовать три уровня словарей, два верхних из которых - defaultdict
, а самый нижний - int
. Я не нахожу подходящий способ сделать это. Вот моя попытка:
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]
Теперь это работает, но следующее, которое является желаемым поведением, не:
d["key4"]["a1"] + 1
Я подозреваю, что должен был где-то объявить, что второй уровень defaultdict
имеет тип int
, но я не нашел, где и как это сделать.
Причина, по которой я использую defaultdict
, во-первых, состоит в том, чтобы избежать инициализации словаря для каждого нового ключа.
Есть еще какие-нибудь изящные предложения?
Спасибо питонерам!