Благодаря великим людям на 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
, заключается в том, чтобы избежать необходимости инициализировать словарь для каждого нового ключа.
Любое более элегантное предложение?
Спасибо pythoneers!