我正在学习Python并且现在遇到了一些问题。我试图得到一个加密文本的字母频率,并希望切换一些字母。到目前为止一切顺利
import collections
file = open('chipertext.txt', 'r')
text = file.read()
print text
lrvmnir bpr sumvbwvr jx bpr lmiwv yjeryrkbi jx qmbm wi bpr xjvni mkd ymibrut jx irhx wi bpr riirkvr jx
letters = collections.Counter(text)
print letters
反击({'':18,'r':14,'我':10,'b':8,'m':7,'j':6,'v':6,'x' :6,'p':4,'w':4,'k':3,'y':3,'l':2,'n':2,'u':2,'\ n': 1,'e':1,'d':1,'h':1,'q':1,'s':1,'t':1})
我不确定如何访问“字母”的元素。我喜欢得到字母的数字,如r = letter [2]并得到计数14
更新: 是否还有一种方法来迭代元素?得到像:
18
r 14
i 10
...
答案 0 :(得分:1)
collections.Counter
是dict
的子类。因此,您可以访问collections.Counter
的元素,就像访问任何普通字典的元素一样。 'r'
计数的示例,您可以使用 - letters['r']
。示例 -
>>> from collections import Counter
>>> c = Counter({' ': 18, 'r': 14, 'i': 10, 'b': 8, 'm': 7, 'j': 6, 'v': 6, 'x': 6, 'p': 4, 'w': 4, 'k': 3, 'y': 3, 'l': 2, 'n': 2, 'u': 2, '\n': 1, 'e': 1, 'd': 1, 'h': 1, 'q': 1, 's': 1, 't': 1})
>>> c['r']
14
对于问题中的新要求 -
更新:是否还有一种方法可以通过元素进行迭代?
是的,您可以在迭代普通字典时迭代它。示例 -
for key,count in letters.iteritems():
print key, count