Подсчет количества ключевых слов в словаре в python - PullRequest
194 голосов
/ 06 февраля 2010

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

Ответы [ 4 ]

342 голосов
/ 06 февраля 2010
len(yourdict.keys())

или просто

len(yourdict)

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

len(set(open(yourdictfile).read().split()))
26 голосов
/ 06 февраля 2010

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

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

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

> list(a.keys())
['foo', 'bar']
1 голос
/ 26 января 2018

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

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

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

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
0 голосов
/ 07 марта 2019

Вызов len() непосредственно в ваш словарь работает, и это быстрее, чем создание итератора d.keys() и вызов len(), но скорость любого из них будет незначительной по сравнению с тем, что делает ваша программа.

d = {x: x**2 for x in range(1000)}

len(d)
# 1000

len(d.keys())
# 1000

%timeit len(d)
# 41.9 ns ± 0.244 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

%timeit len(d.keys())
# 83.3 ns ± 0.41 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...