Я пытаюсь заполнить вложенный defaultdict и изменить default_factory
некоторых внутренних диктов после инициализации.
dictA=defaultdict(lambda: defaultdict(float))
После заполнения и выполнения некоторых вычислений теперь я хочу изменить значение по умолчанию :
dictA[‘a’].default_factory = 1.0
dictA[‘b’].default_factory = 2.0
По какой-то причине dictA[‘a’]
теперь также изменил default_factory
на 2,0. Что я делаю не так?
РЕДАКТИРОВАТЬ: Часть моего настоящего кода: я загружаю текст из файла, чтобы заполнить ngram.
ngram = defaultdict(lambda: defaultdict(float))
##Filling the dictionary
for hist, next_words in ngram.items():
hist_occ = sum(value for word, value in next_words.items())
V = len(next_words.items())
if (k!=0):
ngram[hist].default_factory = lambda: float(k / (hist_occ+ k*V))
Когда я проверяю значения впоследствии, все они кажется равным последнему вычисленному значению