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