You need to enable JavaScript to run this app. 如何在Python字典列表中根据name值获取对应id(优先列表推导式实现)
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python字典列表中根据name值获取对应id(优先列表推导式实现)

按列表推导式实现name匹配对应id的方法

核心逻辑很直接:遍历字典列表里的每一个元素,筛选出name字段值和目标值一致的字典,取出对应的id值就行。

基础列表推导式实现

完全贴合需求的写法,逻辑直观好懂:

# 原始数据
l = [
    {'id': 1, 'name': 'cream'},
    {'id': 2, 'name': 'sugar'},
    {'id': 3, 'name': 'mint'}
]

# 示例:匹配name为'cream'的对应id
target_name = 'cream'
# 列表推导式完成筛选
match_result = [item['id'] for item in l if item['name'] == target_name]

运行后match_result的值为[1]。如果确定列表里每个name值都是唯一不重复的,直接取列表第一个元素就能拿到你要的纯数值结果:

matched_id = [item['id'] for item in l if item['name'] == target_name][0]
# 传入'cream'得到1,传入'sugar'得到2

更稳妥的适配写法

直接取列表第一个元素的写法有个小问题:如果传入的目标name在列表里没有匹配项,会直接抛出索引越界错误。可以顺着列表推导式的逻辑稍作调整,用生成器搭配next()实现,逻辑完全一致,还能在无匹配时返回自定义默认值,对新手更友好:

# 无匹配时返回None,不会触发报错
matched_id = next((item['id'] for item in l if item['name'] == target_name), None)

高频使用的优化写法

如果后续需要频繁做这类匹配操作,可以用字典推导式提前把原始列表转成“name为键、id为值”的映射结构,之后查找不需要反复遍历列表,效率高很多:

# 仅需转换一次
name_to_id_map = {item['name']: item['id'] for item in l}
# 之后查找直接取值即可
print(name_to_id_map['mint'])  # 直接输出3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 23:15:08