【发布时间】:2020-02-19 22:46:54
【问题描述】:
我有一组 50 个文本文件,全部设置有第一行标题,第一列是基因名称,其余列是每个基因的值。我也有一个官方的基因列表文本文件。我想使用官方的基因名称列表来构建一个字典,然后遍历文件,确定每一行的基因名称是否与字典中的基因名称匹配,如果匹配,则将字典值附加到来自的附加值实验文件。
所以实验文件是这样的:
GENE Exp1 Exp2
geneA 12 34
geneB 42 10
geneC 42 10
官方的基因列表是这样的:
GENE
geneA
geneC
我尝试过使用 defaultdict 和以下代码(仅用于一个实验文件,但以后可以迭代更多):
combo = {}
with open('official_gene_list.txt', 'r') as f:
f.readline()
for line in f:
name = line.split('\n')[0]
combo[name]={}
with open('expeirmenta1_file.txt', 'r') as g:
for each in g:
name2 = each.split('\t')[0]
data = each.rstrip('\n').split('\t')[1:]
for name2 in combo:
combo[name2].append(data)
但是每当我这样做时,字典就很好了,但是我收到以下错误:
AttributeError: 'dict' object has no attribute 'append'
我也尝试过使用 defaultdict():
from collections import defaultdict
combo = defaultdict(list)
with open('gene_orf_updated2.txt', 'r') as f:
f.readline()
for line in f:
name = line.split('\n')[0]
combo[name]={}
with open('GSE139_meanCenter_results.txt', 'r') as g:
for each in g:
name2 = each.split('\t')[0]
data = each.rstrip('\n').split('\t')[1:]
for name2 in combo:
combo[name2].append(data)
我得到同样的错误,关于“dict”对象没有属性“append”。
我以前制作过字典,但从未尝试像这样将新值附加到现有键。这可能吗?任何帮助或建议将不胜感激。
【问题讨论】:
-
我认为您混淆了字典和列表。您可以附加到列表,但不能附加到字典。所以你可能想要的是用一个空列表作为它的值来初始化每个键(基因名称),然后附加到那个列表
-
谢谢丹!这就是我所做的(按照这个和发布的其他建议),它似乎按预期工作!
标签: python dictionary append defaultdict