Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据字典中的元素匹配情况交换列表中的元素_Python_Dictionary_Cryptography_Cypher_Alphabet - Fatal编程技术网

Python 根据字典中的元素匹配情况交换列表中的元素

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

好的,基本上我在写一个函数,它包含一个字符串和一个字典,把字母表中的每个字母和字母表中的另一个字母联系起来。该函数然后将字符串拆分为单独的字母,在字典中将它们替换为成对的字母,然后将它们全部放回一起。 需要注意的是,在我的字典中,输入字母表是(key,value)对中的值,我正在尝试切换到key字母表

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