Python列表推导式中如何单次split提取url内keyword后的指定值
实现方案
你可以通过在列表推导式中增加临时变量存储的逻辑,做到每个url仅执行一次split('/')即可拿到目标值,具体实现如下:
res = [parts[parts.index('keyword') + 1] for d in my_list for parts in [d['url'].split('/')]]
逻辑说明
列表推导式里的for parts in [d['url'].split('/')]相当于为每个字典条目生成仅含一个元素的临时列表,遍历一次就把url拆分后的结果赋值给parts变量,全程不会重复执行拆分操作。后续直接基于parts查找keyword的索引,再取索引+1位置的字符串即可。
Python 3.8+ 简化写法
如果你的运行环境支持Python 3.8及以上版本,可通过海象运算符:=更直观地实现相同效果:
res = [parts[parts.index('keyword') + 1] for d in my_list if (parts := d['url'].split('/'))]
此处的if仅用于完成临时变量赋值,因为你已确认输入完全合规,该条件永远成立,不会过滤任何有效条目。
内容的提问来源于stack exchange,提问作者Mehdi
相关产品推荐
相关产品推荐

