python字典根据字母创建键并根据出现的频率创建值

标签 python python-3.x

我必须阅读看起来像这样的文本

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/

相关文章:

python - 是否有类似 Visual Studio 的工具来为 Python 创建 GUI?

python-3.x - AWS Patch Manager 在 Ubuntu 22.04 上失败

python-3.x - 将空元组分配给专用变量时,类型不兼容

python-3.x - 如何在有向图中的两个节点之间制作弯曲边?

python - 列表 ID 与 str 切片

python - 如何修复 'Can' t 在 'localhost:3306' 错误上连接到 MySQL 服务器

python - Pandas - 如何在一行中合并 2 个相关事件

python - 如何根据另一列填充 nan 值

python - 从另一类的一个类调用函数时发生TypeError

python - Django Views - 阻止连续快速调用