我正在尝试将字典中的值(列表)打印到另一个文件的第三列,该文件包含第一列中的字典键。我希望将值列表打印在输出文件的第三列中,并用空格分隔每个值。我知道我的问题在于 Python 不能编写不是字符串的东西,并且列表用“”分隔,但我是编程新手,不知道如何实现这一点 - 任何帮助都是非常感谢,谢谢!
GtfFile.txt 是一个 10 列文件 (sep = '\t'),我使用 Gene 名称作为键和 Term(功能类别)作为值来生成字典。几个基因具有多个归因于它们的术语,并且作为每个术语的新行重复。每个术语也有不同数量的基因,因此我生成一个列表作为每个术语的键。我的脚本的这一部分似乎可以按我的意愿工作!
FuncEnr_terms.txt 是一个 2 列文件 (sep ='\t'),它由第一列中的术语和第二列中的术语描述组成。我想要的输出文件是用第三列复制这个文件,第三列包含与用空格分隔的术语相关联的基因。将其写入输出文件是我的问题所在。
下面是我的代码:
#!/usr/bin/env python
import sys
from collections import defaultdict
if len(sys.argv) != 4 :
print("Usage: GeneSetFileGen.py <GtfFile.txt> <FuncEnr_terms.txt> <OutputFile.txt>")
sys.exit(0)
OutFileName = sys.argv[3]
OutFile = open(OutFileName, 'w')
TermGeneDic = defaultdict(list)
with open(sys.argv[1], 'r') as f :
for line in f :
line = line.strip()
line = line.split('\t')
Term = line[8]
Gene = line[0]
TermGeneDic[Term].append(Gene)
#write output file
with open(sys.argv[2], 'r') as f :
for line in f :
line = line.strip()
Term, Des = line.split('\t')
OutFile.write(Term + '\t' + Des + '\t' + str(TermGeneDic[Term]) + '\n')
OutFile.close