частотная программа в питоне - PullRequest
1 голос
/ 08 марта 2011

Скажем, у меня есть список слов, называемых словами т.е. слова = ["привет", "тест", "строка", "люди", "привет", "привет"], и я хочу создать словарь, чтобы получить частоту слов.

Скажем, словарь называется 'counts'

counts = {}
for w in words:
    counts[w] = counts.get(w,0) + 1

Единственная часть этого, которую я не очень понимаю, - это countts.get (w.0). В книге сказано, что обычно вы используете счетчики [w] = счетчики [w] + 1, но в первый раз, когда вы встретите новое слово, его не будет в счетчиках, и поэтому он вернет ошибку времени выполнения. Это все хорошо и прекрасно, но что именно делает countts.get (w, 0)? В частности, что это за обозначение (w, 0)?

Ответы [ 4 ]

6 голосов
/ 08 марта 2011

FWIW, с Python 2.7 и выше, вы можете предпочесть работать с collections.Counter, например:

In []: from collections import Counter
In []: c= Counter(["hello", "test", "string", "people", "hello", "hello"])
In []: c
Out[]: Counter({'hello': 3, 'test': 1, 'people': 1, 'string': 1})
6 голосов
/ 08 марта 2011

Если у вас есть словарь, get() - это метод, где w - это переменная, содержащая искомое слово, а 0 - значение по умолчанию. Если w отсутствует в словаре, get возвращает 0.

4 голосов
/ 08 марта 2011

В словаре get() метод допускает использование по умолчанию в качестве второго аргумента, если ключ не существует. Так что counts.get(w,0) дает вам 0, если w не существует в counts.

0 голосов
/ 08 марта 2011

Метод get в словаре возвращает значение, хранящееся в ключе, или, необязательно, значение по умолчанию, указанное необязательным вторым параметром. В вашем случае вы говорите: «Получить 0 для предыдущего подсчета, если этого ключа еще нет в словаре, затем добавить один к этому значению и поместить его в словарь».

...