2015-09-26 3 views
2

Я хочу подсчитать количество раз, когда слово появляется в списке укусов.извлечение словаря из объекта-счетчика

['this is a red ball','this is another red ball'] 

Я написал следующий код

counts = Counter() 
for sentence in lines: 
    counts.update(word.strip('.,?!"\'').lower() for word in sentence.split()) 

Это дает мне результат в следующем формате

Counter({'': 6, 'red': 2, 'this': 2, ....}) 

Как я могу получить только словарь?

+2

«Счетчик» - это подкласс словаря - все, что вы можете сделать с первым, вы можете сделать с последним. Почему вы хотите преобразовать его в vanilla dict? Но это достаточно просто: 'dict (counts)'. – jonrsharpe

ответ

3

Счетчик - это просто подкласс подкласса. Нет необходимости «получать» словарь; он является словарем и поддерживает все операторы и методы dict (хотя update работает несколько иначе).

Если по какой-то причине тот факт, что он сообщает себя как счетчик, а не ДИКТ действительно беспокоит вас, вы просто могли бы сделать counts = dict(counts), чтобы преобразовать его обратно в суперкласса. Но этого не нужно.

8

Вы можете просто сделать следующее, если словарь действительно то, что вы хотите.

dict(counts) 

Хотя вы будете иметь все операции в counts переменной, вы можете сделать в обычном словаре питона, потому что Counter подкласс dict.

От Counter docs:

Counter является dict подкласс для подсчета hashable объектов.

+2

@akira, пожалуйста, примите достаточные ответы с помощью кнопки галочки. Это стоит +2 репутации для вас. – kdbanman