我不确定打印字典时发生了什么。
在Python 3中,我有一个名为transSwiss的parse_blast对象字典。每个对象的proteinID是整个对象作为值的关键。
我可以完整地打印transSwiss并且我也可以打印blasto.protein,但是当我将它们组合起来获得字典值时不能。我不确定使用时发生了什么:
print(transSwiss[blasto.protein])
<__main__.parse_blast object at 0x000000373C5666A0>
这是代码
class parse_blast(object):
def __init__(self, line):
#Strip end-of-line and split on tabs
self.fields = line.strip("\n").split("\t")
self.transcriptId, self.isoform = self.fields[0].split("|")
self.swissStuff = self.fields[1].split("|")
self.swissProtId = self.swissStuff[3]
self.percentId = self.fields[2]
def filterblast(self):
return float(self.percentId) > 95
class parse_matrix(object):
#Consider __init__ as a Constructor
def __init__(self, matrix_lines):
(self.protein,
self.Sp_ds,
self.Sp_hs,
self.Sp_log,
self.Sp_plat) = matrix_lines.strip("\n").split("\t")
def separate_tuples(one_tuple):
return "\t".join(one_tuple)
blastmap = map(parse_blast, blast_output.readlines())
filtered = filter(parse_blast.filterblast, blastmap)
matrixmap = map(parse_matrix, matrix_output.readlines()[1:])
transSwiss = {blasto.transcriptId:blasto for blasto in filtered}
for matrixo in matrixmap:
print(transSwiss[matrixo.protein])
答案 0 :(得分:1)
因为您的对象是由您定义的,所以您还需要告诉python您希望它如何打印。你可以通过定义一个名为&#34; __ str __&#34;的函数来做到这一点。返回您想要打印对象的方式。
https://en.wikibooks.org/wiki/Python_Programming/Classes#str