为什么我的代码不能根据字典解码加密字符串?

2024-05-29

我有一本字典,其中包含代表字母的键和值。

例如一个简单的:

DICT_CODE = {'b' : 'g', 'n' :'a', 'p' : 'o', 'x' : 'd', 't' : 'y'}

我收到了一个加密代码,并将该字符串转换为一个列表,其中每个项目都是一个单词。我需要根据字典中的项目来解决它。

代码示例是:

words_list = ["bppx","xnt!"]  # "good day!"

我尝试通过使用双 for 循环来解决它,如下所示:

 for word in words_list:
     for char in word:
         if char in string.letters:
            word = word.replace(char, DICT_CODE.get(char))
 print words_list

预期输出 ->["good","day!"]

输出->["bppx","xnt!"]

它根本不起作用。字符保持不变,代码仍然未知。 我不明白为什么它不起作用,如果有人有时间查看并尝试帮助我并看看出了什么问题,或者甚至提出更好的方法(有效)。


改变wordfor循环内的变量,不会改变for循环内的字符串word_list。您需要记住索引并更新该索引处的元素(并从索引中获取单词) -

for i, word in enumerate(words_list):
    for char in word:
            if char in string.letters:
                    words_list[i] = words_list[i].replace(char, DICT_CODE.get(char))

Demo -

>>> words_list = ["bppx","xnt!"]
>>> DICT_CODE = {'b' : 'g', 'n' :'a', 'p' : 'o', 'x' : 'd', 't' : 'y'}
>>> for i, word in enumerate(words_list):
...     for char in word:
...             if char in string.letters:
...                     words_list[i] = words_list[i].replace(char, DICT_CODE.get(char))
>>> words_list
['good', 'day!']

但对你来说更简单的方法是使用str.translate https://docs.python.org/2/library/stdtypes.html#str.translate(随着string.maketrans https://docs.python.org/2/library/string.html#string.maketrans)。例子 -

table = string.maketrans('bnpxt','gaody') #First argument characters in your original string, and second argument what they map to.
for i, word in enumerate(words_list):
    words_list[i] = word.translate(table)

Demo -

>>> import string
>>> table = string.maketrans('bnpxt','gaody')  #This creates the translation table
>>> words_list = ["bppx","xnt!"]
>>> for i, word in enumerate(words_list):
...     words_list[i] = word.translate(table)
... 
>>> print words_list
['good', 'day!']

这使用列表理解 -

words_list[:] = [word.translate(table) for word in words_list]

Demo -

>>> words_list = ["bppx","xnt!"]
>>> table = string.maketrans('bnpxt','gaody')
>>> words_list[:] = [word.translate(table) for word in words_list]
>>> words_list
['good', 'day!']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的代码不能根据字典解码加密字符串? 的相关文章

随机推荐

  • Jupyter Notebooks 不显示进度条

    我正在尝试在 Jupyter 笔记本中显示进度条 这是一台新电脑 我通常做的事情似乎不起作用 from tqdm import tqdm notebook example iter 1 2 3 4 5 for rec in tqdm not
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • glColor4f() - alpha 值的效果

    我正在使用 glColor4f 令人惊讶的是 更改 alpha 即第四个参数 不会导致透明度发生任何变化 代码段是 const GLfloat squareVertices 0 5 0 5 0 0 0 5 0 5 0 0 0 5 0 5 0
  • 创建和删除表空间 Oracle

    我已经创建了这个表空间 CREATE TABLESPACE IA643 TBS DATAFILE IA643 dat SIZE 500K AUTOEXTEND ON NEXT 300K MAXSIZE 100M 我尝试使用此命令删除它 DR
  • Android 软键盘 - 禁用某些键

    我正在寻找一种使用内置软键盘并禁用某些键的方法 例如 如果用户不应该使用字母 f 因为在列表中该字母不存在 则该键应显示为灰色 想象一下 用户可以在文本框中键入文本以从列表中进行选择 该列表包含 ABC BCCD 床 如果用户输入 A 然后
  • 使用 strace 修复挂起内存问题

    我有一个在 RHEL6 x 64 位 上运行的多线程进程 我发现当我尝试启动该进程时 该进程挂起并且大多数线程 同一进程的 崩溃 有些线程等待线程之间的共享内存被创建 我可以看到所有的共享内存都没有被创建 但是当我使用 strace 时 进
  • 如何使用onDraw(Canvas)获取WebView的位图快照(Android)

    我曾经使用 capturePicture 方法来制作 WebView 的快照 此方法在 API 级别 19 中已弃用 该文档说 使用 onDraw Canvas 获取 WebView 的位图快照 但我真的不知道它是什么意思 你能教我如何解决
  • 如何检查 Android 设备是否在线

    我的服务器不断检查我的 Android 应用程序是否在线 请问我可以在我的android应用程序上执行哪些操作 创建一个名为 isNetworkAvailable 的帮助器方法 该方法将根据网络是否可用返回 true 或 false 它看起
  • {“error”:“服务签名名称:在签名定义中找不到“serving_default””}

    我使用GCP 谷歌云平台 来训练我的模型 我可以导出导出的模型 我使用了该模型并使用了服务 1 8 CPU 的 Tensorflow 的本地 docker 映像 我得到以下结果作为 REST 后调用的输出 错误 服务签名名称 serving
  • GKE 上的 cloudrun 支持 websocket 吗?

    这是我第一次使用 GCP 我正在尝试将我的项目投入生产 但在让 websocket 通信正常工作时遇到了问题 我一直在谷歌上搜索 我非常不清楚 GKE 上运行的云是否支持入站 出站 Websocket 连接 限制文档指出 完全托管的 clo
  • 在 Silverlight 中使用 RIA 服务时如何扩展实体?

    在我的 Silverlight 解决方案的服务器端 我有 2 个项目 提供 Silverlight 页面的网站 实体框架数据访问层 我有一个具有 FirstName 和 LastName 属性的实体 我想添加一个可从 Silverlight
  • 如何使用显式引用转储 YAML?

    递归引用非常适合ruamel yaml or pyyaml ruamel yaml dump ruamel yaml load A A id001 id001 然而 它 显然 不适用于普通引用 ruamel yaml dump ruamel
  • IQueryable 到 ObservableCollection 其中 a = 匿名类型

    我希望将列表视图的数据上下文绑定到可观察的集合 现在我有 CurrentEmploye some employee Entities DatabaseModel m new Entities DatabaseModel var q from
  • 如何从键盘为 QTableWidget 创建信号?

    我有一张桌子 可以通过左 右 上 下按钮在里面移动 现在 当我停留在某个单元格并按空格键时 我需要创建一个信号 该信号还应该带来该单元格的坐标 我尝试使用 QTableWidget 的标准信号 但它不起作用 我该如何解决这个问题 创建一个单
  • TCHAR 仍然相关吗?

    我是 Windows 编程新手 在读完 Petzold 的书后 我想知道 使用TCHAR类型和 T 函数来声明字符串或者我应该使用wchar t and L 新代码中的字符串 我将仅针对现代 Windows 截至撰写本文时版本 10 和 1
  • .htaccess:“重定向永久”并回退到“RewriteRule”

    我有一个网上商店 我们可以在其中切换子目录 从 shop 到根 一些产品和类别名称也发生了变化 我想将一些特定的 URL 重定向到较新的 URL 例如 www domainname de shop product abc to www do
  • 根据共同值对两个数据帧求和

    我有一个看起来像的数据框 day of week count 1 0 3 2 3 1 3 4 1 4 5 1 5 6 3 另一个喜欢 day of week count 1 0 17 2 1 6 3 2 1 4 3 1 5 4 5 6 5
  • 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的超类

    我有三个实体 特征值 php
  • Rails 3:用户创建自定义表单?

    我正在尝试思考如何允许用户创建具有所有字段类型的自定义表单 如果有一颗宝石那就太好了 但我似乎无法在任何地方找到它 所以我有一个像这样的数据库设置 t integer form id t string name t string hint
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo