首页 > 解决方案 > 如何找出字母表和字母转换频率?

问题描述

示例:“彼得·派珀摘了一小撮泡椒”

首先,计算一个字母的频率。

abc = 'peter piper picked a peck of pickled peppers'
set(abc)
freq = {}
for i in abc:
    freq[i] = abc.count(i)
freq

但是,我找不到如上转换的字母的编号,我怎样才能得到呢?

  1. p>e : 5
  2. e>t : 1
  3. t>e : 1
  4. e>r : 3

标签: pythonpython-3.xpython-2.7

解决方案


  1. zip与移位 1 的相同字符串一起使用以获取当前字符和下一个字符对
  2. 用于collections.Counter获取计数。它还可以将您的代码简化为一行。
from collections import Counter
    
Counter(zip(abc, abc[1:]))

回报:

Counter({('p', 'e'): 5,
         ('e', 't'): 1,
         ('t', 'e'): 1,
         ('e', 'r'): 3,
         ('r', ' '): 2,
         (' ', 'p'): 5,
         ('p', 'i'): 3,
         ('i', 'p'): 1,
         ('i', 'c'): 2,
         ('c', 'k'): 3,
         ('k', 'e'): 1,
         ('e', 'd'): 2,
         ('d', ' '): 2,
         (' ', 'a'): 1,
         ('a', ' '): 1,
         ('e', 'c'): 1,
         ('k', ' '): 1,
         (' ', 'o'): 1,
         ('o', 'f'): 1,
         ('f', ' '): 1,
         ('k', 'l'): 1,
         ('l', 'e'): 1,
         ('e', 'p'): 1,
         ('p', 'p'): 1,
         ('r', 's'): 1})

推荐阅读