2010-02-06 2 views
129

У меня есть список слов в словаре со значением = повторение ключевого слова, но мне нужен только список отдельных слов, поэтому я хотел бы подсчитать количество ключевых слов. Есть ли способ подсчитать количество ключевых слов или есть другой способ, которым я должен искать разные слова?Подсчет количества ключевых слов в словаре в python

ответ

229
len(yourdict.keys()) 

или просто

len(yourdict) 

Если вы хотите подсчитывать уникальных слов в файле, вы могли бы просто использовать set и сделать как

len(set(open(yourdictfile).read().split())) 
+4

Я знаю, что этот пост старый, но мне было любопытно. Это самый быстрый метод? Или: это * * разумно быстрый метод для больших словарей? – theJollySin

+1

Оба '' len (yourdict.keys()) '' 'и' '' len (yourdict) '' 'являются O (1). Последнее немного быстрее. См. Мои тесты ниже. –

+2

Я хотел бы отметить, что вы также можете использовать значения (я знаю, что вопрос не задавал) с помощью 'len (yourdict.values ​​())' – ntk4

15

Количество различных слов (например, количество записей в словаре) можно найти с помощью функции len().

> a = {'foo':42, 'bar':69} 
> len(a) 
2 

Чтобы получить все различные слова (то есть ключи), использовать метод .keys().

> list(a.keys()) 
['foo', 'bar'] 
+0

очень приятно. Большое спасибо за помощь! – Dan

0

Если речь идет о подсчитывая количество ключевых слов, то рекомендовал бы что-то вроде

def countoccurrences(store, value): 
    try: 
     store[value] = store[value] + 1 
    except KeyError as e: 
     store[value] = 1 
    return 

в главной функции есть что-то, что петли через данные и передавать значение функции countoccurrences

if __name__ == "__main__": 
    store = {} 
    list = ('a', 'a', 'b', 'c', 'c') 
    for data in list: 
     countoccurrences(store, data) 
    for k, v in store.iteritems(): 
     print "Key " + k + " has occurred " + str(v) + " times" 

код выводит

Key a has occurred 2 times 
Key c has occurred 2 times 
Key b has occurred 1 times 
Смежные вопросы