Python:我如何阅读元素

时间:2015-10-13 09:59:35

标签: python python-2.7

我正在学习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

...

1 个答案:

答案 0 :(得分:1)

collections.Counterdict的子类。因此,您可以访问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