ここで辞書の理解はどうなっていますか?フィルタオブジェクトの辞書の理解
私はBLASTファイルを解析しており、ファイル内の各行にオブジェクトを作成したいとします。理想的には、各オブジェクトは、後でプログラムで使用するために辞書に格納されます。 解析は正常ですが、私は空のtransSwiss辞書になります。私は、各BLASTラインparse_blastオブジェクト作成しようとしている
c0_g1_i1|m.1 gi|74665200|sp|Q9HGP0.1|PVG4_SCHPO 100.00 372 0 0 1 372 1 372 0.0 754
c1000_g1_i1|m.799 gi|48474761|sp|O94288.1|NOC3_SCHPO 100.00 747 0 0 5 751 1 747 0.0 1506
c1001_g1_i1|m.800 gi|259016383|sp|O42919.3|RT26A_SCHPO 100.00 268 0 0 1 268 1 268 0.0 557
c1002_g1_i1|m.801 gi|1723464|sp|Q10302.1|YD49_SCHPO 100.00 646 0 0 1 646 1 646 0.0 1310
:ここ
は、一例として、出力の数行です。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
blastmap = map(parse_blast, blast_output.readlines())
filtered = filter(parse_blast.filterblast, blastmap)
transSwiss = {blastmap.transcriptId:blastmap for blastmap.transcriptId in filtered}
、あなたの 'percentId'は、文字列ではなく、' int'です。あなたは本当にここでクラスを使う必要はありませんが、これはかなり混乱します。指摘したように、あなたはまた、あなたのdictの理解のローカル変数を上書きしようとしています。 –
正解、percentIdは文字列です。また、これは私のプログラム全体ではなく、現在私が問題を抱えている部分だけです。 – Chris