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

Python 3.6.9读取YAML配置实现车辆属性筛选及可扩展需求

解决方案

首先修正原代码的安全问题,并实现完整的属性遍历与筛选功能:

1. 安全加载配置并遍历所有属性

原代码使用的yaml.load存在安全风险,建议替换为yaml.safe_load;同时需要进入Cars节点才能获取到具体车型的属性数据:

import yaml

# 安全加载YAML配置文件
with open("config.yml", "r") as ymlfile:
    cfg = yaml.safe_load(ymlfile)

# 提取所有车型数据
cars_data = cfg["Cars"]

# 遍历每个车型及其所有属性
for car_name, attrs in cars_data.items():
    print(f"车型:{car_name}")
    for attr_name, value in attrs.items():
        print(f"  {attr_name}:{value}")
    print("---")

这段代码会自动适配配置文件的扩展——后续新增车型或属性(比如添加Color字段),无需修改代码就能完成遍历。

2. 实现动态筛选功能

将车型数据转换为统一的列表结构,即可用Python内置函数轻松实现各种筛选需求,且适配后续扩展:

import yaml

with open("config.yml", "r") as ymlfile:
    cfg = yaml.safe_load(ymlfile)

# 转换为通用列表格式,每个元素包含车型名和所有属性
cars_list = [
    {"name": car_name, **attrs}
    for car_name, attrs in cfg["Cars"].items()
]

# 筛选座位数最多的车型
max_seats_car = max(cars_list, key=lambda x: x["Seats"])
print(f"座位数最多:{max_seats_car['name']},座位数:{max_seats_car['Seats']}")

# 筛选价格最高的车型
max_price_car = max(cars_list, key=lambda x: x["Price"])
print(f"价格最高:{max_price_car['name']},价格:{max_price_car['Price']}")

# 若后续需新增筛选逻辑(比如最新年份),直接复用即可
latest_year_car = max(cars_list, key=lambda x: x["Year"])
print(f"最新年份:{latest_year_car['name']},年份:{latest_year_car['Year']}")

扩展适配说明

  • 新增车型:在配置文件中直接添加新的车型节点(如Toyota: {Price: 380, Seats: 5, Year: 2023}),代码会自动纳入遍历与筛选。
  • 新增属性:给车型添加新属性(如Color: Black),遍历代码会自动输出;若需基于新属性筛选,只需新增对应的max/min逻辑,核心遍历代码无需改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:18:10