объединение вложенных списков

Рейтинг: 0Ответов: 3Опубликовано: 01.03.2023

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

morse_encode = {"0": "-----", "1": ".----", "3": "...--", "2": "..---","4": "....-",
"5": ".....","6": "-....","7": "--...","8": "---..","9": "----.","a": ".-",
"b": "-...","c": "-.-.","d": "-..","e": ".","f": "..-.","g": "--.","h": "....",
"i": "..", "j": ".---","k": "-.-","l": ".-..","m": "--","n": "-.","o": "---",
"p": ".--.","q": "--.-","r": ".-.","s": "...","t": "-","u": "..-","v": "...-",
"w": ".--","x": "-..-","y": "-.--","z": "--..", ".": ".-.-.-",",": "--..--",
"?": "..--..","!": "-.-.--", "-": "-....-", "/": "-..-.", "@": ".--.-.",
 "(": "-.--.",")": "-.--.-"}

words = ["code", "bit", "list", "soul", "next"]

for i_word in word:
    morse_word = []
    mors_answer = []
    for key, value in morse_encode.items():
        if i_word == key:
            morse_word.append((value))

Ответы

▲ 1

Проходите по словам, проходите по буквам слов - и используете словарь по назначению, его не нужно весь перебирать, можно сразу доставать из него нужный элемент по ключу:

morse_data = ' '.join(''.join(morse_encode[ch] for ch in word) for word in words)
print(morse_data)

Вывод:

-.-.----... -.....- .-.......- ...---..-.-.. -..-..--
▲ 0

Какой вывод должны получить? Список из слов-морзе подряд или список-списков - каждой слово в отдельном списке?

Вот пример для всех слов подряд:

word = ["code", "bit", "list", "soul", "next"]
morse_encode = {"0": "-----", "1": ".----", "3": "...--", "2": "..---","4": "....-", "5": ".....","6": "-....",
                "7": "--...","8": "---..","9": "----.","a": ".-", "b": "-...","c": "-.-.","d": "-..","e": ".",
                "f": "..-.","g": "--.","h": "....", "i": "..", "j": ".---","k": "-.-","l": ".-..","m": "--",
                "n": "-.","o": "---", "p": ".--.","q": "--.-","r": ".-.","s": "...","t": "-","u": "..-",
                "v": "...-", "w": ".--","x": "-..-","y": "-.--","z": "--..", ".": ".-.-.-",",": "--..--", "?": "..--..",
                "!": "-.-.--", "-": "-....-", "/": "-..-.", "@": ".--.-.", "(": "-.--.",")": "-.--.-"}
morse_word = [morse_encode[letter] for i_word in word for letter in i_word]
print(morse_word)

Вывод:

['-.-.', '---', '-..', '.', '-...', '..', '-', '.-..', '..', '...', '-', '...', '---', '..-', '.-..', '-.', '.', '-..-', '-']
▲ 0

всем спасибо разобрался как сделать. тут правда еще рандом включен, это для задания

def get_random_word(words):
    """
    Получает случайное слово
    из списка слов
    """
    word = random.choice(words)
    return word

def morse_func(morse_encode):
    """
    переводит слова на английском языке
    в последовательности точек и тирe
    """
    mors_answer = []
    for i in get_random_word(words):
        for key, value in morse_encode.items():
            if key == i:
                mors_answer.append("".join(value))
    return "".join(mors_answer)