Nltk Python Error: "Typeerror: 'Dict_Keys' Object Is Not Subscriptable"

Nltk Python Error: "Typeerror: 'Dict_Keys' Object Is Not Subscriptable"

I am following instructions for a class homework assignment and I am supposed to look up the top 200 most frequently used words in a text file.

Here's the last part of the code:

fdist1 = FreqDist(NSmyText)
vocab=fdist1.keys()
vocab[:200]

But when I press enter after the vocab 200 line, it returns:

 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object is not subscriptable

Any suggestions on how to fix this so it can correctly return an answer?

3

6 Answers

Looks like you are using Python 3. In Python 3 dict.keys() returns an iterable but not indexable object. The most simple (but not so efficient) solution would be:

vocab = list(fdist1.keys())
2

I am using python 3.5 and I meet the same problem of TypeError.

Using vocab = list(fdist1.keys()) does not give me the top 50 most frequently used words.
But fdist1.most_common(50) does.

Further,if you just want to show those top 50 words not with their frequency,you can try :

[word for (word, freq) in fdist1.most_common(50)]

1

To print the most frequently used 200 words use: fdist1.most_common(200) The above line of code will return the 200 most frequently used words as key-frequency pair.

If you want to get elements as keys and values (word and frequency), you can use:

list(fdist1.items())[:200]

If your using python 3 try:

fdist1.most_common(200)

instead, to get the 200 most frequent words.

fdist1 = FreqDist(NSmyText)

vocab=fdist1.keys()

This code is using in Python2.7. So you should do some change. dic.keys() returns an iteratable. So using:

list(fdist1.keys())

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.