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

时间:2012-03-14 12:15:57

标签: python dictionary markov

所以为了好玩,我决定重新考察一下我曾经给过的一个旧的大学作业,其中有一个大约75个字符的密文,以及用三个字母(我老师的姓名首字母)签名的小儿床

我做了什么:

  1. 将结果归结为那些有部分或全部婴儿床的人。
  2. 然后我开始对(1)的较小的结果子集进行一些字母频率分析。
  3. 现在任务归结为编写一些语言识别软件,但首先要处理一些问题。我选择暴力破坏所有转子设置(类型,初始pos) 所以带有部分或全部婴儿床的结果条目仍然有一些从插板上换掉的字母。

    我知道我的下一步应该是制作两个矩阵并消化一个语料库,在第一个矩阵中,我只是做一个计数,所以如果第一个字母是A,在第一个矩阵中,我会在行0,我将增加的列将是直接跟在A之后的字母,说它是B.然后我会移到B并看到下一个字母是U所以我会去B行并增加列你进入。在消化了整个语料库之后,我会将概率放入第二个矩阵中。

    使用第二个矩阵,我可以为整个句子分配得分值,并且可以对输出进行评分并进一步缩小结果,因此找到信息应该很容易,因为在更小的草堆中找到一个引脚。

    现在我在python中这样做了,我想知道是否更好地将字符转换为整数,减去最小的字符'A',然后将其用作我的索引,或者我应该使用dict和每个字母都对应一个int值,因此在我的矩阵中查找位置的索引看起来像LetterTally[dict['A']][dict['B']]

    施法减法方法如下所示:

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

    这两种不同的方法会更快吗?

1 个答案:

答案 0 :(得分:1)

您是否考虑使用dicts的dict而不是构建矩阵,以便您可以直接进行查找(LetterTally['A']['B'])?