如何用python中的字典值迭代替换列表项?

时间:2015-12-07 22:50:55

标签: python loops dictionary iteration

我正在尝试创建一个编码/解码函数,它接受一个输入字符串,并通过匹配一个键来将每个字母切换到字典Key中的相应值。它基本上是一个ROT-13密码。

def Encode_Decode(A):
    A=list(A)
    for n in range(0,len(A),+1):
        if A[n]==Key.keys:
            map(Key.values(),A[n])


    print("This translates to: "+"".join(A))



Encode_Decode("Hello there")

我使用字典将字母表中的键值分配给字母13个字母

Key=    {'a':'n','b':'o','c':'p','d':'q','e':'r','f':'s',
'g':'t','h':'u','i':'v',
'j':'w','k':'x','l':'y','m':'z','n':'a',
'o':'b','p':'c','q':'d','r':'e'
,'s':'f','t':'g','u':'h','v':'i','w':'j',
'x':'k','y':'l','z':'m','A':'N',
'B':'O','C':'P','D':'Q','E':'R','F':'S',
'G':'T','H':'U','I':'V','J':'W',
'K':'X','L':'Y','M':'Z','N':'A','O':'B',
'P':'C','Q':'D','R':'E','S':'F',
'T':'G','U':'H','V':'I','W':'J',
'X':'K','Y':'L','Z':'M'}

有谁可以告诉我为什么我的功能不会返回翻译的句子?

2 个答案:

答案 0 :(得分:1)

这不是唯一的问题,但......我想你想要:

if A[n] in Key:

而不是

if A[n]==Key.keys:
顺便说一下,

键是dict的一个令人困惑的名字。

我知道这只是一个评论,不是一个完整的答案,但我不知道如何格式化评论:)

答案 1 :(得分:1)

如果所有可能的字符都在Key中,您可以写下:

def Encode_Decode(A):
    A = map(Key.get, A)
    print("This translates to: "+"".join(A))

但是,在测试字符串中,有一个空格,Key.get(' ')会返回None。如果序列中有"".join(A)

,则None将失败

您可以通过将默认参数传递给Key.get

来解决此问题
def Encode_Decode(A):
    A = (Key.get(x, x) for x in A)
    print("This translates to: "+"".join(A))

Key.get(x, x)表示如果x不在字典中,只需使用x,那么空格和其他字符将保持不变