我必须阅读看起来像这样的文本
TCCATCTACT
GGGCCTTCCT
TCCATCTACC
等等...
我想创建一个字典,我如何阅读它并将 T、C、A 或 G 设置为键,值是字母的频率 出现在整个文本中吗?
最佳答案
只需将整个字符串传递给 collections.Counter()
object它会计算每个字符。
逐行执行可能会更有效,以免需要太多内存:
from collections import Counter
counts = Counter()
with open('inputtextfilename') as infh:
for line in infh:
counts.update(line.strip())
str.strip()
调用会删除所有空格(例如换行符)。
使用示例输入的快速演示:
>>> from collections import Counter
>>> sample = '''\
... TCCATCTACT
... GGGCCTTCCT
... TCCATCTACC
... '''.splitlines(True)
>>> counts = Counter()
>>> for line in sample:
... counts.update(line.strip())
...
>>> for letter, count in counts.most_common():
... print(letter, count)
...
C 13
T 10
A 4
G 3
我使用了Counter.most_common()
method获取字母计数对的排序列表(按照从最常见到最不常见的顺序)。
关于python字典根据字母创建键并根据出现的频率创建值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27111985/