# Python Dictionary holding wrong values

I am creating a hangman algorithm in Python as a learning project, I have a list of words the computer picks at random and filters etc. It has 8 lives to guess the word.

I have a dictionary in python called `a_count` - which stores the frequency of each letter in a specific list. The plan was to start off with a list of 12500 words, calculate the max frequency (`nGuess`) and then filter the list based on whether it does or does not contain that word. It then removes the letter `nGuess` from `a_count` so it doesn't try to pick the same letter again.

My issue is my list of words `nlist` is being filtered correctly (down to 125 in the final iteration) and the length of `a_count` appears to be removing letters accordingly (down to 17 in the last iteration however, `a_count` appears to be holding on to values from maybe the first time I initialized values to it.

`{'H': 1682, 'D': 2364, 'G': 1576, 'B': 1547, 'C': 1947, 'K': 1426, 'F': 1071, 'M': 1908, 'P': 1945, 'Y': 1992, 'W': 1013, 'V': 661, 'Z': 412, 'X': 268, 'J': 270, 'Q': 104}`

My list of words is 125 at this point so the sum of values should equal 625 (5*125)

The code is as below:

``````while life > -1 and pos < 5:
if life == 0:
loses = loses + 1
break

nword = []
word = []
letters = []
chars = []

for word in nlist:
nword.append(word)
for letters in chars:
a_count[letters] = a_count.get(letters, 0) + 1

for x in blacklist:
a_count.pop(x, 0)

for x in whitelist:
a_count.pop(x, 0)

print(a_count)
print(len(nlist))
nGuess = (max(a_count.items(), key=operator.itemgetter(1)))

print(nword)
print(str(nGuess) + ' is my next guess')

nlist = []
flist = []
hlist = []

for g in nword:
if nGuess in g:
flist.append(g)

for g in nword:
if nGuess not in g:
hlist.append(g)

if nGuess in tokens:
nlist = flist
whitelist.append(nGuess)
print(str(nGuess) + ' is in the word')
pos = tokens.count(nGuess) + pos
else:
nlist = hlist
blacklist.append(nGuess)
life = life - 1
print(str(nGuess) + ' is not in the word, I have ' + str(life) + ' lives left')

if pos == 5:
wins = wins + 1
break
``````

Can anyone see what the issue is? Am I right in saying after the first iteration (not shown in the code) is that storing the values in the dictionary, and then subsequent `a_count` is adding to the current list? As the pop is working, I'm just not getting the count's I would expect.

Even when I was left with a list of 4 words it was choosing a letter than wasn't even in any of those words! So the issue definitely lies with `a_count`