对于我正在处理的一个项目,我正在处理许多深度嵌套的 dict-and-list 数据结构。我经常发现自己在进行查找,希望返回包含单个成员的列表。查找可能会彻底失败,或者只是返回零结果,因此我可以编写如下代码:
try:
value_I_need = lookup_results[0]
except IndexError:
# handle lookup failure, keep going
但最近我一直在想,如果最初假设它只发生零次或一次,那么编写一个循环是否更适合 future :
value_I_need = None
for value_I_need in lookup_results:
break
if value_I_need is None:
# handle lookup failure, keep going
(我说“面向 future ”是因为我可能想重写或概括此代码以处理其中包含多个结果的查找。)这两种方法中的任何一种是否存在固有的非 Pythonic、错误或速度较慢的问题?
最佳答案
The builtin function next()
正是这样做的:
a = ()
b = [1, 2, 3]
print next(iter(a), "empty") # prints "empty", as a doesn't give any values.
print next(iter(b), "empty") # prints 1, the 1st value of b
关于loops - 使用循环与在 try/except 中获取特定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825248/