Skip to main content
 首页 » 编程设计

list之python 帮助从列表中提取值

2025年05月04日15think

lst = [{"id": 1, "name": "ernest"}, .... {"id": 16, name:"gellner"}] 
 
for d in lst: 
    if "id" in d and d["id"] == 16: 
        return d 

我想从列表中提取键“id”等于“16”的字典。

有没有更pythonic的方式呢?

提前致谢

请您参考如下方法:

重复现有答案以摆脱评论:

当您只需要序列中的第一个匹配元素时,请考虑使用生成器表达式:

d16 = (d for d in lst if d.get('id') == 16).next() 

您会经常在我的代码中看到这种模式。如果事实证明 lst 中没有任何项目符合条件,这将引发 StopIteration。当预期发生这种情况时,您可以捕获异常:

try: 
    d16 = (d for d in lst if d.get('id') == 16).next() 
except StopIteration: 
    d16 = None 

或者更好的是,将整个事情展开到一个 停止

的 for 循环中
for d16 in lst: 
    if d16.get('id') == 16: 
        break 
else: 
    d16 = None 

(else: 子句仅在 for 循环耗尽其输入时才运行,但如果 for 循环结束则被跳过,因为使用了 break)