- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我开始从一本书上学习一些密码学,现在我有一个练习要我从一个字符串中找出每个字符的频率:
像这样:
import collections
my_coded_string = """NTCGPDOPANFLHJINTOOFITOVJHJCTMMHIHEMTCPFDWTSOFSHTOGFWTE
TTJJTBTOOFSZOVEOCHCVCHPJHOCGTOHNQMTOCNTCGPDCGFCSTQMFBTO
FBGFSFBCTSHJCGTQMFHJCTYCXHCGFAHYTDDHAATSTJCBGFSFBCTSHJC
GTBHQGTSCTYCCGHONTCGPDQSTOTSWTOCGTMTCCTSASTRVTJBZHJCGTQ
MFHJCTYCFJDOPPJTBFJOTFSBGAPSCGTQMFHJCTYCASPNFIHWTJBHQGT
SCTYCEZBPNQFSHJICGTASTRVTJBZPATFBGMTCCTSFIFHJOCCGTLJPXJ
BPNNPJASTRVTJBZHJCGTVJDTSMZHJIMFJIVFIT"""
letters = collections.defaultdict(float)
for letter in my_coded_string:
letters[letter] += 1
d_descending = OrderedDict(sorted(letters.items(), key=lambda x: x[-1], reverse=True))
print d_descending
这将返回一个类型为 float
的字典,其中包含所有键及其频率(按降序排列)。到目前为止一切顺利,没有什么可怕的。
输出:
([
('T', 57.0), ('C', 40.0), ('J', 29.0), ('F', 27.0), ('H', 26.0), ('S', 23.0), ('G', 22.0), ('O', 20.0), ('B', 16.0),
('P', 15.0), ('M', 12.0), ('A', 10.0), ('N', 10.0), ('I', 9.0), ('Q', 9.0), ('D', 8.0), ('V', 8.0), ('Y', 6.0),
('Z', 6.0), ('E', 4.0), ('W', 4.0), ('R', 3.0), ('L', 2.0), ('X', 2.0)
])
现在,他们说为了解码这个字符串,我必须将这些频率与他们提供的频率进行比较,这似乎是英语中每个字符的预期频率。
现在,我遇到的问题是:如何用第一个频繁出现的字母 E
替换所有出现次数最多的字母 T
英文字母表,然后是 C
和 T
等等?
在某些时候,当我将 T
替换为 E
时,我将拥有 57 个 E
,但我还将拥有剩余的 e
。有什么想法吗?
最佳答案
如果您还为预期英语的映射创建了一个 OrderedDict
语言(降序),你将能够创建一个第二个 dict
可用于将 my_coded_string
合二为一迭代。
假设预期的英文映射称为 freqs
:
translate_table = dict(zip(d_descending, freqs))
my_string = ''.join([translate_table[c] for c in my_coded_string])
假设您还想处理换行符 (\n
),下面是一个完整的工作代码:
import collections
import itertools
freqs = collections.OrderedDict([
('e', 12.702), ('t', 9.056), ('a', 8.167), ('o', 7.507),
('i', 6.749), ('n', 6.749), ('s', 6.327), ('h', 6.094),
('r', 5.987), ('d', 4.253), ('l', 4.052), ('c', 2.782),
('u', 2.758), ('m', 2.406), ('w', 2.360), ('f', 2.228),
('g', 2.015), ('y', 1.974), ('p', 1.929), ('b', 1.492),
('v', 0.978), ('k', 0.772), ('j', 0.153), ('x', 0.150),
('q', 0.095), ('z', 0.074)])
my_coded_string = """NTCGPDOPANFLHJINTOOFITOVJHJCTMMHIHEMTCPFDWTSOFSHTOGFWTE
TTJJTBTOOFSZOVEOCHCVCHPJHOCGTOHNQMTOCNTCGPDCGFCSTQMFBTO
FBGFSFBCTSHJCGTQMFHJCTYCXHCGFAHYTDDHAATSTJCBGFSFBCTSHJC
GTBHQGTSCTYCCGHONTCGPDQSTOTSWTOCGTMTCCTSASTRVTJBZHJCGTQ
MFHJCTYCFJDOPPJTBFJOTFSBGAPSCGTQMFHJCTYCASPNFIHWTJBHQGT
SCTYCEZBPNQFSHJICGTASTRVTJBZPATFBGMTCCTSFIFHJOCCGTLJPXJ
BPNNPJASTRVTJBZHJCGTVJDTSMZHJIMFJIVFIT"""
def translate(coded):
coded_lines = coded.split('\n')
letters = collections.defaultdict(float)
for letter in itertools.chain(*coded_lines):
letters[letter] += 1
mapping = dict(zip(
(i[0] for i in sorted(letters.items(),
key=lambda x: x[-1], reverse=True)),
freqs.keys()))
return '\n'.join(''.join(mapping[letter] for letter in line)
for line in coded_lines)
print(translate(my_coded_string))
关于python - 用另一个字符替换字符串中所有出现的所有字符,而不会相互干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33568267/
这是我的 + 部分: function insert(){ var linkElement = document.getElementById("BackButton"); var linkEl
我有两辆 buggy 在轨道上移动,它们都使用超声波测量模块来检测路径中的障碍物,并由 Arduino 微 Controller 控制。两个超声波传感器以相同的频率工作,并且这个频率不能改变。两个超声
希望能快速解决这个问题。我有一个用文件位置替换特定值的脚本。不幸的是,该位置似乎经常包含\n 或 n\(因为当前目录位于临时文件夹中),导致该行中断或从该行中完全删除自身,从而使文件夹位置无效。 临时
我使用的是 Mac OSX 10.10.1。我通常使用brew或pip来安装所有东西。我注意到我的 virtualenv 总是抓取我本地安装的所有 Python 包。我通过删除我的 $PYTHONPA
我正在尝试使用 str_replace 将两个字母的语言缩写转换为完整的单词。我遇到的问题是它们在回显时会相互影响。 $lang = str_replace("en", "English", $lan
我已经创建了用于结束通话的 aidl 文件 ITelephony.aidl。现在,在通话结束之前,我需要生成正在进行的通话中的语音,以便听众认为接下来的工作有问题。我尝试通过三种方式自己解决这个问题:
使用这个查询,我得到了我需要的每个客户下的订单数量的结果。但是,当我在 SELECT 字段中使用 SUM(OrderLine.ActualPrice) 并使用内部联接将 Order 表链接到包含价格的
在 Spring Boot 应用程序中,仅使用注释,我想实现安全性 我已将 @EnableGlobalMethodSecurity(jsr360Enabled=true) 添加到配置类。该类还有一个
我一直在 Linux 下开发一个多线程程序,对信号处理有特殊要求。例如,我需要程序打印单个 Ctrl-C 输入的统计信息。 我使用 pthread_sigmask 和 sigwait 实现了这一点,即
作为我第一次涉足 Dynamic Scala 领域,我想我会尝试通过 applyDynamic 访问 bean 属性。 我的第一个非常粗略的剪裁是 trait BeanProperties ext
我知道这是一个令人沮丧的话题,但我尝试遵循文档和其他类似的帖子。 我的问题是,除非重新加载页面,否则 JS 将无法工作。 我有以下 JS: $(function() { $('a.form-sho
我正在使用 JQuery Ajax 从服务器获取脚本。 $.ajax({ url: src, type: "GET", dataType: "script", time
我正在尝试根据每个产品的选定数量分别输出计算价格。我尝试复制代码并重命名所有变量,但输出是由各种增加/减少按钮触发的。 这是目前的代码: $(".incr-btn_mobile").on("click
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: jQuery in Greasemonkey 1.0 conflicts with websites usi
我在一个 iOS 应用程序 (Obj-C) 中有一个 View ,它在中心有一个 ImageView ,紧接着在其下方有一个 slider 。 ImageView 显示专辑封面, slider 可用于
我有一个 View Controller ,将 UITapGestureRecognizer 附加到它的主 UIView,并使用户能够点击屏幕以使状态、导航和工具栏重新出现/消失(如照片应用程序)。我
我正在尝试在我的应用程序中设置 log4j,但我的一个第三方 JAR 似乎以某种方式不断将我的日志级别设置为“关闭”。它仅在执行该库中的代码时发生。我不知道它是如何做到这一点的,因为我没有使用它知道名
我有一个 UIScrollView,其框架与包含的 View Controller 相同。 当 ScrollView 的缩放比例大于 1 时,从屏幕左侧 50% 开始从左向右滑动会导致 interac
我是网页设计的新手,最近接触了 Bootstrap。我最近也开始使用 Codepen。在 Codepen 中完成一个元素后,我将代码从那里复制并粘贴到 Sublime 中,无论出于何种原因,它更改了我
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and t
我是一名优秀的程序员,十分优秀!