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

如何用列表推导式按id过滤提取嵌套字典的price字段值

按ID过滤提取嵌套字典中的Price值

针对你遇到的price字段既可能是单个字典也可能是字典列表的情况,可以通过统一格式后再过滤提取,以下是几种实用实现方式:

方式一:循环遍历(可读性优先)

先将price字段统一转为列表格式,再筛选出id匹配的元素对应的price数据:

# 定义目标ID
target_id = "953"
# 获取sub_main下的元素集合
sub_main_items = Data["main"]["sub_main"]

result = []
for item in sub_main_items:
    # 匹配目标ID
    if item.get("id") == target_id:
        price_data = item.get("price", [])
        # 单个字典转成列表,统一处理逻辑
        if isinstance(price_data, dict):
            price_data = [price_data]
        result.extend(price_data)

方式二:列表推导式(简洁高效)

用嵌套列表推导式一步完成筛选和格式统一:

target_id = "953"
sub_main_items = Data["main"]["sub_main"]

result = [
    price 
    for item in sub_main_items 
    if item.get("id") == target_id 
    for price in (item["price"] if isinstance(item["price"], list) else [item["price"]])
]

仅提取第一个匹配元素的Price

如果只需要第一个符合ID条件的元素对应的price,可用next()函数快速获取:

target_id = "953"
sub_main_items = Data["main"]["sub_main"]

# 找到第一个匹配ID的元素,无匹配时返回None
matched_item = next((item for item in sub_main_items if item.get("id") == target_id), None)
result = []
if matched_item:
    price_data = matched_item["price"]
    result = price_data if isinstance(price_data, list) else [price_data]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:15:32