количество слов отображается в алфавитном порядке - PullRequest
1 голос
/ 10 октября 2019

В задачах обработки текста, первое, что нужно сделать, это выяснить, как часто каждое слово появляется в данном документе. В этой задаче вы будете выполнять функцию, которая возвращает уникальные частоты слов в документе с токенами.

написать код для завершения функции count_frequencies. Входной аргумент (arr) представляет собой список строк, представляющих документ с токенами. Пример ввода может выглядеть следующим образом:

['the', 'dog', 'got', 'the', 'bone']

Ваша функция count_frequenciesдолжен вернуть список кортежей, где первый элемент в кортеже - это уникальное слово из arr, а второй элемент в кортеже - это частота, с которой он появляется в arr. Возвращаемый список должен быть отсортирован в алфавитном порядке по первому элементу каждого кортежа. Для приведенного выше примера правильным выводом будет следующий список кортежей:

**[('bone', 1), ('dog', 1), ('got', 1), ('the', 2)]**

Еще пара примеров (с решениями) показана ниже:

**Input: ['we', 'came', 'we', 'saw', 'we', 'conquered']**
**Solution: [('came', 1), ('conquered', 1), ('saw', 1), ('we', 3)]**
**Input: ['a', 'square', 'is', 'a', 'rectangle']**
**Solution: [('a', 2), ('is', 1), ('rectangle', 1), ('square', 1)]**

Вы можете написать свойсобственные тестовые случаи в текстовом поле ввода. В этом случае ваш тест должен состоять из разделенных пробелами слов, представляющих список ввода для функции count_frequencies.

1 Ответ

4 голосов
/ 10 октября 2019

Вы можете использовать эту простую функцию, используя collections.Counter:

from collections import Counter

def count_words(list_of_words):
    return sorted([(k, v) for (k,v) in dict(Counter(list_of_words)).items()])

>>> count_words(['we', 'came', 'we', 'saw', 'we', 'conquered'])

# [('we', 3), ('came', 1), ('saw', 1), ('conquered', 1)]
...