You need to enable JavaScript to run this app. 如何用Python列表推导式提取嵌套结构中所有alternatives的name值
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python列表推导式提取嵌套结构中所有alternatives的name值

正确实现方式

最简洁的嵌套列表推导式写法

直接通过两层for遍历实现打平+字段提取,代码如下:

result = [alt['name'] for item in SOME_LIST for alt in item['alternatives']]

输出结果完全符合你的预期:['Foo', 'foo', 'fu', 'Bar', 'bar', 'ba']


之前写法报错原因

你试过的三种写法问题分别是:

  • 第一种[i['alternatives'] for i in SOME_LIST]:仅提取了每个元素的alternatives列表,得到的是二维嵌套列表,既没有打平也没有提取name字段
  • 第二种[*i['alternatives'] for i in SOME_LIST]:Python语法不支持在列表推导式的元素表达式中直接使用可迭代对象解包,所以报语法错误
  • 第三种[alt['name'] for alt in [i['alternatives'] for i in SOME_LIST]]:内层推导式返回的是由alternatives列表组成的嵌套结构,遍历得到的alt是列表类型而非字典,自然无法用字符串作为下标取值,所以报类型错误

可选其他实现方式

如果层级更深、或者不想写多层for,可以配合itertools.chain实现:

from itertools import chain

result = [alt['name'] for alt in chain.from_iterable(item['alternatives'] for item in SOME_LIST)]

内容的提问来源于stack exchange,提问作者Micheal J. Roberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 05:27:04