统计集合多值元素内特定字符串出现次数:计算各基因的互作数量
问题原因
你的代码存在三个核心问题:
- Python 的
set类型没有count()方法,该方法仅适用于列表、元组这类序列类型 - 集合
geneInt中存储的是基因对二元组,直接匹配单个基因永远无法命中 - 代码存在拼写错误,追加列表时的
ineractions应为interactions
实现方案
方案1:使用内置collections.Counter快速统计(推荐)
代码简洁执行效率高,同时支持直接生成字典或顺序匹配的列表结果:
from collections import Counter # 展平所有互作对中的基因,统计每个基因的出现次数 gene_counter = Counter(g for pair in geneInt for g in pair) # 字典形式结果:键为基因名,值为对应互作次数 interaction_dict = dict(gene_counter) # 若要生成和输入genes列表顺序完全对应的向量,无互作的基因自动返回0 interaction_list = [gene_counter.get(gene, 0) for gene in genes]
方案2:手动遍历实现(无需导入依赖)
如果不想依赖内置统计工具,可以手动遍历互作对完成计数:
# 初始化计数字典,所有基因默认互作次数为0 interaction_dict = {gene: 0 for gene in genes} # 遍历每个互作对,两个基因的计数各加1 for g1, g2 in geneInt: interaction_dict[g1] += 1 interaction_dict[g2] += 1 # 若需要转成和输入列表顺序对应的结果 interaction_list = [interaction_dict[gene] for gene in genes]
内容的提问来源于stack exchange,提问作者Petras Nasvytis
相关产品推荐
相关产品推荐

