You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中PHP array_column的等效实现:从字典列表提取指定字段

Python3 替代for循环提取字典列表特定项的方法

我有一个字典列表,想要从每个字典中提取特定项,数据格式如下:

data = [
    { "_id": "uuid", "_index": "my_index", "_score": 1, "_source": { "id" : 1, "price": 100 } },
    { "_id": "uuid", "_index": "my_index", "_score": 1, "_source": { "id" : 2, "price": 150 } },
    { "_id": "uuid", "_index": "my_index", "_score": 1, "_source": { "id" : 3, "price": 90 } }
]

期望输出:

formatted_data = [ { "id": 1, "price": 100 }, { "id": 2, "price": 150 }, { "id": 3, "price": 90 } ]

目前用for循环实现:

formatted_data = []
for item in data:
    formatted_data.append(item['_source'])

想知道Python3里有没有类似PHP array_column() 的方法替代这个循环?

在Python里,你完全可以用更简洁的方式替代这个循环,下面给你两种常用的方案:

1. 列表推导式(最推荐)

这是Python处理这类场景最标准、最Pythonic的写法,一行代码搞定,可读性和执行效率都很棒:

formatted_data = [item['_source'] for item in data]

它和你写的for循环逻辑完全一致,但更紧凑,也是大多数Python开发者的首选写法。

2. 函数式风格:map() + lambda

如果你喜欢函数式编程的风格,也可以用map()配合匿名函数来实现:

formatted_data = list(map(lambda item: item['_source'], data))

需要注意的是,map()返回的是一个迭代器对象,所以要套一层list()把它转换成列表格式。这种写法也能达到目的,但相比列表推导式,可读性稍弱一些,所以一般更推荐前者。

另外提一句:Python标准库中并没有和PHP array_column() 完全等价的内置函数,但针对你这个简单的提取需求,上面两种方法已经足够简洁高效了。如果以后遇到更复杂的提取场景(比如需要处理键不存在的情况、提取嵌套更深的字段),你可以自己封装一个类似的工具函数,但当前场景下列表推导式就是最优解。

内容的提问来源于stack exchange,提问作者MH2K9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:19:38