"哪个更快?Python中的转换和减法还是字典查找"

2024-05-17 19:08:35 发布

您现在位置:Python中文网/ 问答频道 /正文

所以为了好玩,我决定重温我以前的大学作业,其中一个密文有75个字符,还有一个婴儿床,上面有三个字母(我老师的缩写)

我所做的:

  1. 把结果缩小到那些有部分或全部婴儿床的。你知道吗
  2. 然后我开始对(1)中较小的结果子集进行字母频率分析。你知道吗

现在的任务可以归结为编写一些语言识别软件,但是有几个问题需要首先解决。我选择强制所有转子设置(类型,初始位置) 因此,结果中包含部分或全部婴儿床的条目仍然有一些从插件板交换的字母。你知道吗

我知道我的下一步应该是做两个矩阵,消化一个语料库,在第一个矩阵中,我只需要做一个计数,所以如果第一个字母是a,在第一个矩阵中,我会在第0行,我会增加的列将是a后面的字母,假设它是一个B,然后我会移到B,看到下一个字母是一个U,所以我会去B行,增加U列的条目。在消化了整个语料库之后,我会把概率放到第二个矩阵中。你知道吗

使用第二个矩阵,我可以给整个句子分配得分值,并且有一种方法可以对输出进行评分,并进一步缩小结果的范围,因此找到消息应该很容易,就像在一个小得多的大海捞针一样。你知道吗

现在我用python来做这个,我想知道是否最好将chars转换成int,对最小的char'a'做一个减法,然后用它作为索引,或者我是否应该使用dict,每个字母都对应一个int值,因此在我的矩阵中查找位置的索引看起来像LetterTally[dict['A']][dict['B']]。你知道吗

投射减法如下所示:

firstChar = 'A'
secondChar = 'B'

LetterTalley[(ord(firstChar)-ord('A'))][(ord(secondChar)-ord('A'))]

在这两种不同的方法中,哪种更快?你知道吗


Tags: 方法作业字母条目矩阵dict大学int