Très bien, j'essaye donc d'écrire une fonction qui prend une chaîne et un dictionnaire qui relie chaque lettre de l'alphabet à une autre lettre de l'alphabet. La fonction divise ensuite la chaîne en lettres individuelles, les échange contre leur paire dans le dictionnaire, puis remet le tout ensemble. Il est important de noter que dans mon dictionnaire, l'alphabet d'entrée correspond aux valeurs de la paire (clé, valeur) et j'essaie de passer à l'alphabet clé.
def substitutor(text,theDict): for n in list(text): n = [key for (key, value) in theDict.items() if value == n]
Ce que j'ai essayé ici, c'est de prendre chaque lettre n dans la liste des lettres "liste (texte)" et de la redéfinir comme la clé de ma paire (clé, valeur) dans le dictionnaire. Je sais que je dois rendre quelque chose mais je ne sais pas quoi. La sortie doit être soit une liste équivalente à list (texte) mais avec les lettres permutées, soit mieux encore une seule chaîne combinant cette liste en une seule. Je suis super nouveau en python, donc il me manque peut-être quelque chose d'évident ici, j'aimerais beaucoup d'aide.
3 Réponses :
Utilisation de str.translate ()
def substitutor(text,theDict): d = {ord(v): k for k, v in theDict.items()} return text.translate(d)
Inversez le dictionnaire, puis utilisez-le pour traduire les éléments de text
.
def substitutor(text, theDict): rev_dict = {v: k for k, v in theDict.items()} return ''.join(rev_dict.get(c, '') for c in text)
Votre code est incorrect, en premier lieu, vous ne devriez pas définir l'index d'itération (n ici) avec autre chose, ** ce que vous pouvez faire est d'obtenir chaque élément de chaîne et de l'utiliser comme clé du dictionnaire pour l'obtenir Caractère crypté !! **
Pour l'exemple, j'ai mis un code d'une ligne pour vous, cela fonctionnera en conséquence de votre problème !!
def substitutor(text,theDict): encrypted_text = ''.join([ theDict.get(n) for n in list(text) if theDict.haskey(n) ]) return encrypted_text
s'il vous plaît poster un exemple d'entrée et de sortie
Cela n'a aucun sens d'attribuer à la variable d'itération.
Oh première remarque, pourquoi définissez-vous la variable index n avec une liste en 3ème ligne?
Vous n'avez pas besoin de convertir une chaîne en liste, vous pouvez utiliser
pour n dans le texte:
Pourquoi ne pas créer deux dictionnaires, un pour chaque direction, pour ne pas avoir à rechercher
theDict.items ()
?