Хотя вы точно не указали, что такое data
, data['tweet_split']
, скорее всего, возвращает list
из list
с, а FreqDist
, вероятно, является словоподобным объектом.
Таким образом, когда вы делаете fd[i] += 1
, вы индексируете fd
с помощью list
, что со словарем или чем-то, что использует словари в их реализации, невозможно, потому что списки не могут хэшироваться. Возможно, вы можете конвертировать i
здесь в tuple
, например tuple(i)
, но не совсем понятно, если это именно то, что вы и хотели.
Это потому, что Python dicts можно индексировать только с неизменные объекты, которые по своей природе являются неизменными, имеют неизменное значение ha sh. кортежи похожи на списки в том смысле, что они представляют собой набор элементов, но одно из основных отличий состоит в том, что они не могут быть изменены, так как их содержимое также является неизменным, ха sh кортежа является постоянным:
>>> t = ('a', 'b', 'c')
>>> hash(t)
6876511439064834292
>>> l = ['a', 'b', 'c']
>>> hash(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
list
в принципе можно хэшировать, но проблема в том, что элементы списка могут быть добавлены, удалены или изменены на месте, поэтому ха sh списка не будет постоянным, и таким образом, не будет полезным в качестве словарного ключа.