使用词典翻译

时间:2017-11-26 16:14:30

标签: python

我只是尝试了一些来自工作簿的代码并且有不同的练习,但我想尝试一个预先存在的消息,我已经做到这一点,但我无法弄清楚如何完成它。我该怎么做呢?

alphabet = {"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": "--.."}

message = ".-- .... . .-. . / .- .-. . / -.-- --- ..-"

for key,val in alphabet.items():
    if message in alphabet:
        print(key)

2 个答案:

答案 0 :(得分:7)

这里的根本问题是您需要将消息拆分为可以单独解码的单独部分。

消息首先用斜杠(单词)分隔,然后用空格(字符)分隔。所以我们可以在这里使用MovieId, GenreId, GenreName两次来获取元素:

split()

现在我们需要一些东西来解码角色。但是存储一个字符作为键的字典没有多大意义:我们想要解码消息,所以这里的点和连字符需要是键,而不是字母字符。

我们可以自己构建一个新词典,或者自动构建一个新词典:

for word in message.split('/'):
    for character in word.strip().split():
        # ... decode the character

那么我们可以使用查找方法:

decode_dict = {v: k for k, v in alphabet.items()}

现在我们获取已解码的消息,但每个字符都在一个单独的行上。但是,我们可以使用decode_dict = {v: k for k, v in alphabet.items()} for word in message.split('/'): for character in word.strip().split(): print(decode_dict[character]) # print the decoded character print(' ') # print space after the word和生成器来生成字符串:

str.join

结果就是解码后的字符串:

' '.join(''.join(decode_dict[character] for character in word.strip().split())
         for word in message.split('/'))

答案 1 :(得分:5)

您需要撤消字典:

alphabet1 = {b:a for a, b in alphabet.items()} 
message = ".-- .... . .-. . / .- .-. . / -.-- --- ..-"
decoded_message = ''.join(alphabet1.get(i, ' ') for i in message.split())

输出:

'WHERE ARE YOU'