擅长:python、mysql、java
<p>如果外部层次结构是元组,那么循环(或者像list comprehension或genexp之类的100%等效的东西)才是真正的唯一方法,正如您所指出的那样,元组是一个非常轻量级的容器,实际上几乎没有任何方法(只是实现索引所需的一些特殊方法,循环等;-)。在</p>
<p>闪电般快速的检索是字典的特点,而不是元组。你不能有一个字典(作为主结构,或者作为辅助结构)把“第三元素的值”映射到你所寻找的子元组(或者它在主元组中的索引)的映射吗?它可以用一个循环构建,然后提供尽可能多的快速搜索!在</p>
<p>如果你选择循环,根据Brian的评论和我的回复,genexp的可读性和平均速度可能是listcomp的两倍(因为它只完成了循环的一半):</p>
<pre><code>my_thing = next(item for item in things if item[2] == "Blurgle")
</code></pre>
<p>它读起来很流畅,就是“下一个项目中的第[2]子项等式模糊”(当你从头开始时,你找到的“下一个”项目将是“第一个”,在你的情况下,只有一个合适的项目)。在</p>
<p>如果需要覆盖没有项满足谓词的情况,则可以传递<code>next</code>第二个参数(如果需要,它将返回该参数),否则(没有第二个参数,如我的代码片段中所示),如果没有项满足谓词,则会出现StopIteration异常两种行为都可能是您想要的(正如您所说的,这种情况永远不会出现,异常看起来适合于您的特定应用程序,因为所讨论的事件将是一个意外错误)。在</p>