我有一组50个文本文件,都设置了一个第一排header,第一列是基因名称,其余列是每个基因的值。我也有一个官方的基因list文本文件。我想使用官方基因名list建立一个字典,然后遍历文件,确定每行的基因名称在字典相匹配的基因名称,如果是的话,追加来自附加价值的字典值实验文件。
所以实验文件看起来像这样:
GENE Exp1 Exp2
geneA 12 34
geneB 42 10
geneC 42 10
官方基因list看起来是这样的:
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)
而我得到“字典”对象有没有属性“追加”同样的错误。
我以前做了字典,但从未尝试过新的价值附加到这样的现有密钥。这可能吗?任何帮助或建议将不胜感激。
分析解答
你靠近做到这样。
combo = {}
with open('gene_orf_updated2.txt', 'r') as f:
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:]
if name2 in combo:
combo[name2].append(data)
如果你想删除nested list做到这一点,而不是。
combo[name2] += data