Python вложенная проблема defaultdict - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь заполнить вложенный 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))

Когда я проверяю значения впоследствии, все они кажется равным последнему вычисленному значению

...