Решение задачи. Dictionary & named tuples

394 просмотра
0
0 Комментариев

В приведенной задаче находятся 3 функции:
1. Выводит текст и осуществляет подсчет слов.
2. Должна выводить каждое слово и число его повторений в виде словаря.
2. Должна выводить каждое слово и число его повторений в виде named tuples, в последовательности, в которой слова находятся в тексте.

import argparse
import sys
 
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("infile", help="Text file to be analyzed.")
    args = parser.parse_args()
    with open(args.infile, encoding="utf-8") as f:
        text = f.read()
    words = text.split()
    unique_words(words)
 
def unique_words(words):
    the_dict = {}
    for line in words:
        unique_words(the_dict)
    return(the_dict)
 
def count_unique_sorted(words):
    words = []
    return(words)
 
if __name__ == "__main__":
    sys.exit(main())

Непосредственно текст (.txt):

Design, develop, maintain and test cloud applications in Python, and document API for cloud services.
design, develop,          and test cloud applications in Python, and document API for       services.
Design,        ,          and      cloud              in Python, and document     for       services.


Добавить комментарий

1 Ответы

Python Опубликовано 12.12.2018
0

Так как вы не указали желаемый результат, я не уверен что моё решение вам подходит, вот мой вариант:

from collections import Counter
from collections import namedtuple
import sys
 
def data():
    with open(sys.argv[1], 'r') as file:
        return file.read().strip()
def first(arg): # Подсчет слов
    return f'Результат первой функции {len(arg.split())}\n'
def two(arg): # Слово и его кол-во
    return f'Результат второй функции {Counter(arg.split())}\n'
def three(arg): # Слово и его кол-во в виде namedtuple
    name = namedtuple('NAME', ['word', 'count'])
    return f'Результат третьей функции {tuple(name(word, arg.count(word)) for word in set(arg.split()))}'

Использование: при запуске скрипта передайте 1 параметром в cmd путь к файлу, а далее:

print(first(data()))
print(two(data()))
print(three(data()))

Результат при данных которые вы указали в вопросе:

Результат первой функции 37
 
Результат второй функции Counter({'and': 6, 'cloud': 4, 'in': 3, 'Python,': 3, 'document': 3, 'for': 3, 'Design,': 2, 'develop,': 2, 'test': 2, 'applications': 2, 'API': 2, 'services.': 2, 'maintain': 1, 'design,': 1, 'services': 1})
 
Результат третьей функции (NAME(word='API', count=2), NAME(word='cloud', count=4), NAME(word='document', count=3), NAME(word='Python,', count=3), NAME(word='for', count=3), NAME(word='services.', count=2), NAME(word='test', count=2), NAME(word='in', count=5), NAME(word='Design,', count=2), NAME(word='develop,', count=2), NAME(word='applications', count=2), NAME(word='services', count=3), NAME(word='and', count=6), NAME(word='design,', count=1), NAME(word='maintain', count=1))

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up