我不确定我的问题是什么,但看起来很简单,虽然我似乎无法弄明白。我有一个嵌套字典:
letters = [' ', '!', '"', '%', '&', "'", '(', ')', '*', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '|', '}', '~']
count1 = 0
lettersdict = [{i : 1 for i in letters}]*len(letters)
nestedletters = {letters[i] : lettersdict[i] for i in range(len(letters)) }
...(此处mapdict
只是一个词典,它将txtmatrix2[x]
中的单词映射到trainingset[count]
中的单词,然后迭代所有txtmatrix[x]
和他们的相应的trainingset[count]
)
for key in mapdict:
if len(txtmatrix[x][key]) == len(trainingset[count][mapdict[key]]):
for letnum in range(len(txtmatrix2[x][key])):
letter = txtmatrix2[x][key][letnum]
corespletter = trainingset[count][mapdict[key]][letnum]
if letter in letters:
nestedletters[letter][corespletter] += 2
sums[mapofletters[letter]] += 2
问题在于,当我运行代码时,我希望它计算出我的对象字符识别(txtmatrix2
)中出现的字母(例如'a')出现在我的黄金标准中的次数({ {1}}为'a','b','c'......)。但是,当我运行此代码时,似乎不是更新与trainingset
关联的字典而是更新nestedletters['a']['a']
(即它更新了对应于'a'的所有字典的'a'插槽... 'Z')。好奇如果有人对正在发生的事情有任何想法。
卡梅伦