Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 8
1

Задача на список или словарь в Python

18.05.2017, 21:54. Показов 9369. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста, помогите решить данную задачу, на языке программирования Python! (желательно, используя список или словарь).
необходимо написать программу анализа текста. На вход программе подаются строки, содержащие английские слова. В одной строке может быть произвольное количество слов. Все слова записаны строчными (маленькими) английскими буквами. Между словами в строке может быть один или больше пробелов, возможны пробелы в начале и в конце строки. Других символов, кроме строчных английских букв и пробелов, в строках нет. Длина каждой строки не превышает 200 символов. Количество строк неизвестно, общее количество слов не более одного миллиона. Конец ввода обозначается строкой, содержащей единственный символ «*».
Напишите эффективную, в том числе по памяти, программу, которая будет определять количество слов, начинающихся на каждую букву английского алфавита, и выводить эти количества и соответствующие им буквы в порядке убывания. Если количество слов, начинающихся на какие-то буквы, совпадает, эти буквы следует выводить в алфавитном порядке. Если на какую-то букву слов нет, выводить эту букву не надо.
Размер памяти, которую использует Ваша программа, не должен зависеть от размера исходного списка.

Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи и укажите используемый язык программирования и его версию.

Пример входных данных:
one two three four five
a quick brown fox
*
Пример выходных данных для приведенного выше примера входных данных:
f 3
t 2
а 1
b 1
о 1
q 1

Примечание. Английский алфавит совпадает с латинским и содержит 26 букв от а до z:
abcdefghijklmnopqrstuvwxyz
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2017, 21:54
Ответы с готовыми решениями:

База данных или простой словарь в андроид-приложении «Список продуктов»?
Пишу на питоне 3.6 с библиотекой kivy, ОС Виндовс 7. Пишу, для практики, приложение на Андроид...

Создать словарь (ключи - литераторы, значения - список их произведений), заполняемый с клавиатуры (или с файла)
Если с файла Толстой: Война и мир, Анна Каренина, Кавказский пленник, Юность Грибоедов: Горе от...

Python: задача на список
Прошу помочь с задачей Составил код, но не получается подстроить в условие чтоб в result...

Мульти словарь или как генерировать словарь в словаре
Добрый день. Есть большое количество данных, которое на хочется перебирать, и появилась проблема: ...

Пусть список студентов представлен в виде структуры. Преобразуйте список в словарь
Пусть список студентов представлен в виде структуры ,,]. Преобразуйте список в словарь вида: {№: ,...

3
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,360
Записей в блоге: 9
20.05.2017, 06:34 2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding: utf-8 -*-
text = '''\
one two three four five
a quick brown fox
*'''
 
d = {}
for line in text.split('\n'):
    if line == '*':
        break
    for word in line.split(' '):
        letter = word[0]
        try:
            d[letter] += 1
        except KeyError:
            d[letter] = 1
l = list(d.items())
l.sort(key=lambda x: x[1], reverse=True)
for k, v in l:
    print('%s %d' % (k, v))
Добавлено через 39 секунд
Оптимизации нет, в частности этого:
Цитата Сообщение от Nata22440 Посмотреть сообщение
Размер памяти, которую использует Ваша программа, не должен зависеть от размера исходного списка.
0
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 8
21.05.2017, 22:36  [ТС] 3
Рыжий Лис, Нет это и не главное (оптимизация). За решение спасибо огромное, но не мог бы (если не трудно) сделать, чтобы ввод строки производился с клавиатуры?
0
5 / 5 / 1
Регистрация: 20.05.2017
Сообщений: 44
22.05.2017, 02:34 4
Питон изучаю с октября так что не орите громко на меня =)
По коду шаблон на первый символ в слове многострочность и игнорирования регистра не поддерживается
Python
1
2
3
4
5
6
7
8
9
10
11
12
from __future__ import print_function
from collections import Counter, OrderedDict
import re
 
 
class OrderedDict(Counter, OrderedDict):
 
    def __reduce__(self):
        return self.__class__, (OrderedDict(self),)
 
text = input()
print(OrderedDict(re.findall(r"\b\w", text)))
OrderedDict() счетчик упорядоченного словаря - подсчет
re.findall(r"\b\w", text) выцепляет из текста первые буквы в словах, r"\b\w" - регулярное выражение, text - строка

Добавлено через 9 минут
Не поддерживается также "выводить эти количества и соответствующие им буквы в порядке убывания. Если количество слов, начинающихся на какие-то буквы, совпадает, эти буквы следует выводить в алфавитном порядке." (При первом прочтении не обратил на это внимание)
Python 3
0
22.05.2017, 02:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2017, 02:34
Помогаю со студенческими работами здесь

Напишите программу на Python, чтобы проверить, пустой список или нет
Напишите программу на Python, чтобы проверить, пустой список или нет.

Словарь python
Задано данные о стоимости каждой из n = 5 моделей автомобилей и о их типе (легковой или грузовой)....

Словарь Python
Здравствуйте. Хотел узнать как можно одной коммандой вытянуть из словаря пайтон несколько...

Частотный словарь на python
Здравствуйте. Нам дали вот такое задание: Задача - составить частотный словарь слов, используя...

Толковый словарь в Python
Создал словарь,сделал графику,теперь не получается привязать функцию к кнопке. Что делать? Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru