Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 14.07.2018
Сообщений: 23
1

Задача Англо-латинский словарь

16.07.2018, 00:16. Показов 6905. Ответов 3
Метки нет (Все метки)

Однажды, разбирая старые книги на чердаке, школьник Вася нашёл англо-латинский словарь. Английский он к тому времени знал в совершенстве, и его мечтой было изучить латынь. Поэтому попавшийся словарь был как раз кстати.

К сожалению, для полноценного изучения языка недостаточно только одного словаря: кроме англо-латинского необходим латинско-английский. За неимением лучшего он решил сделать второй словарь из первого.

Как известно, словарь состоит из переводимых слов, к каждому из которых приводится несколько слов-переводов. Для каждого латинского слова, встречающегося где-либо в словаре, Вася предлагает найти все его переводы (то есть все английские слова, для которых наше латинское встречалось в его списке переводов), и считать их и только их переводами этого латинского слова.

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

Входные данные
В первой строке содержится единственное целое число N — количество английских слов в словаре. Далее следует N описаний. Каждое описание содержится в отдельной строке, в которой записано сначала английское слово, затем отделённый пробелами дефис (символ номер 45), затем разделённые запятыми с пробелами переводы этого английского слова на латинский. Переводы отсортированы в лексикографическом порядке. Порядок следования английских слов в словаре также лексикографический.

Все слова состоят только из маленьких латинских букв, длина каждого слова не превосходит 15 символов. Общее количество слов на входе не превышает 100000.

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

Примеры
входные данные
3
apple - malum, pomum, popula
fruit - baca, bacca, popum
punishment - malum, multa
выходные данные
7
baca - fruit
bacca - fruit
malum - apple, punishment
multa - punishment
pomum - apple
popula - apple
popum - fruit


Не проходит по времени 1 тест, как можно ускорить,оптимизировать код

Python
1
2
3
4
5
6
7
8
9
10
11
12
dic = dict()
for i in range(int(input())):
    english_word,latin_words = list(map(str,input().split(" - ")))
    array_of_latin_words = latin_words.split(", ")
    for j in range(len(array_of_latin_words)):
        if(array_of_latin_words[j] not in dic):
            dic[array_of_latin_words[j]]= english_word
        else:
            dic[array_of_latin_words[j]] = dic[array_of_latin_words[j]]+", "+english_word
print(len(dic.keys()))
for latin_word,english_word in sorted(dic.items()):
    print(latin_word+' - '+english_word)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2018, 00:16
Ответы с готовыми решениями:

Задача «Англо-латинский словарь»
Всем привет, есть задачка, вот её условие. Условие Однажды, разбирая старые книги на чердаке,...

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

Англо-латинский словарь
Однажды, разбирая старые книги на чердаке, школьник Вася нашёл англо-латинский словарь. Английский...

Англо-Латинский и Латинско-Английский словарь
В общем, нам дано число n - количество англ слов. Затем в каждой строчке дается само англ. слово и...

3
Автоматизируй это!
Эксперт Python
5535 / 3572 / 1019
Регистрация: 30.03.2015
Сообщений: 10,890
Записей в блоге: 29
16.07.2018, 07:59 2
lookatthis, а почему input используешь? входные данные не в файле должны быть?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
latin = dict()
with open("latin.txt") as file:
    count = int(file.readline(1))
    lines = [line.rstrip() for line in file.readlines() if len(line.rstrip()) > 0]
    for line in lines:
        name, means = line.split(" - ")
        for mean in means.split(", "):
            if mean not in latin.keys():
                latin[mean] = list()
            latin[mean].append(name)
    latin = dict(sorted(latin.items()))
    print(len(latin))
    for k, v in latin.items():
        print(k, "-", ','.join(sorted(v)))
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 33
22.04.2021, 00:56 3
В файле

Добавлено через 57 минут
Ответ не выходит только
0
Status 418
Эксперт Python
2433 / 1423 / 439
Регистрация: 26.11.2017
Сообщений: 3,932
Записей в блоге: 1
22.04.2021, 05:45 4
В файле input.txt хранится англо-русский словарь. Создать русско-английский словарь и сохранить его в отсортированном ви
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2021, 05:45
Помогаю со студенческими работами здесь

Англо-русский словарь
нужно написать программу "англо-русский и русско-английский словарь" база данных словаря должна...

Англо-русский словарь
Как сделать анго-русский словарь на Delphi. Нужна идея.

Англо-русский словарь
Помогите создать англо русский словарь

Англо-русский словарь
комбобокс1 и мемо1. В комбобокс внесены слова из текстового документа. Нужно сделать так, чтобы,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru