[英]Dictionary comprehension on a filter object
我的字典理解在这里是怎么回事?
我正在解析一个BLAST文件,并希望为文件中的每一行创建对象。 理想情况下,每个对象都将存储在字典中,以供以后在程序中使用。 解析工作正常,但我最终得到了一个空白的transSwiss字典。
以下是几行输出示例:
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
我正在尝试使每个BLAST行都成为parse_blast对象。
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}
执行此操作时:
for blastmap.transcriptId in filtered
你想给每个元素分配filtered
到blastmap.transcriptId
顺序。 blastmap
是map
类型的列表或实例,具体取决于您的Python版本,因此它没有transcriptId
属性,并且您的代码因AttributeError
失败。
使用变量。 一个新变量:
transSwiss = {pb.transcriptId: pb for pb in filtered}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.