Python 根据字典中的元素匹配情况交换列表中的元素
好的,基本上我在写一个函数,它包含一个字符串和一个字典,把字母表中的每个字母和字母表中的另一个字母联系起来。该函数然后将字符串拆分为单独的字母,在字典中将它们替换为成对的字母,然后将它们全部放回一起。 需要注意的是,在我的字典中,输入字母表是(key,value)对中的值,我正在尝试切换到key字母表Python 根据字典中的元素匹配情况交换列表中的元素,python,dictionary,cryptography,cypher,alphabet,Python,Dictionary,Cryptography,Cypher,Alphabet,好的,基本上我在写一个函数,它包含一个字符串和一个字典,把字母表中的每个字母和字母表中的另一个字母联系起来。该函数然后将字符串拆分为单独的字母,在字典中将它们替换为成对的字母,然后将它们全部放回一起。 需要注意的是,在我的字典中,输入字母表是(key,value)对中的值,我正在尝试切换到key字母表 def substitutor(text,theDict): for n in list(text): n = [key for (key, value) in theD
def substitutor(text,theDict):
for n in list(text):
n = [key for (key, value) in theDict.items() if value == n]
我在这里尝试的是获取字母列表“list(text)”中的每个字母n,并将其重新定义为字典中我的(key,value)对中的键。
我知道我需要归还一些东西,但我不知道是什么。输出应该是一个与列表(文本)等价但字母交换的列表,或者更好的是一个将该列表合并为一个列表的字符串。我是python的新手,所以我可能遗漏了一些明显的东西,希望能得到帮助 使用
反转字典,然后使用它来翻译
文本的元素
def substitutor(text, theDict):
rev_dict = {v: k for k, v in theDict.items()}
return ''.join(rev_dict.get(c, '') for c in text)
您的代码不正确,首先您不应该用其他东西定义迭代索引(此处为n),**您可以做的是获取字符串的每个元素,并将其用作字典的密钥,以获取其加密字符**
对于示例,我为您输入了一行代码,它将相应地解决您的问题
def substitutor(text,theDict):
encrypted_text = ''.join([ theDict.get(n) for n in list(text) if theDict.haskey(n) ])
return encrypted_text
请发布一个输入和输出示例。分配给交互变量没有意义。哦,首先请注意,为什么在第三行用列表定义变量索引n?您不需要将字符串转换为列表,您可以在文本中为n使用:
为什么不制作两个字典,每个方向一个,所以您不必搜索dict.items()
?
def substitutor(text,theDict):
encrypted_text = ''.join([ theDict.get(n) for n in list(text) if theDict.haskey(n) ])
return encrypted_text