我有这段代码,它不工作,我不知道为什么。你知道吗
我的数据结构:
最后,“parent”是成绩单的ID(字符串)。 我需要获取与字符串“parent”具有相同ID的Transcript实例(ptrans)。 它在一个基因实例中。你知道吗
当我在底层运行代码时,我没有得到一个真正的异常,而是一个“StopIteration”,我认为我捕获了它,然后它应该继续下一个Gene对象,对吗?地址:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
ptrans = next(t for t in g.transcripts.values() if t.ID == parent)
StopIteration
我可以用嵌套的for循环来实现,但我认为这也可以。我就是想不通这是怎么回事。有人能解释为什么,或者它是如何工作的吗?你知道吗
# iterate over Gene-dict
for g in genes.values():
#Iterate over Transcripts in 1 Gene
try:
ptrans = next(t for t in g.transcripts.values() if t.ID == parent)
#If no match, continue
except StopIteration:
continue
if ptrans:
break
你的代码
几乎可以肯定的是,他没有按照你的想法去做。我怀疑
g.transcript.values()
中没有将父项作为其ID的项,因为在空生成器上调用next()
确实会引发StopIteration
错误。你知道吗但是
next()
函数在任何情况下都只会被调用一次,这意味着即使有有效值,也只会返回第一个值。嵌套循环是一种更简单的方法来实现您要做的事情。你知道吗相关问题 更多 >
编程相关推荐