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

Python中按days属性查找对象列表最小元素时报dict无days属性如何解决

问题原因

通过json.loads反序列化得到的列表元素为字典类型,Python 中字典不支持.语法访问键对应的值,只能通过[键名]的方式取值,因此触发属性不存在的报错。

解决方案

方案1(最简改法,无需修改数据结构)

直接修改min函数的key逻辑,使用字典取值方式获取days对应值:

maintenance_cycle = min(lists, key=lambda r: r['days'])

方案2(如果需要保留属性访问的写法)

可以将字典转换为支持属性访问的对象,两种常见实现如下:

  • 基于SimpleNamespace快速转换
from types import SimpleNamespace
from operator import attrgetter

lists = json.loads("[" + data + "]")
# 批量将字典转为支持属性访问的对象
obj_list = [SimpleNamespace(**item) for item in lists]
maintenance_cycle = min(obj_list, key=attrgetter('days'))
  • 基于dataclass定义结构化类型转换
from dataclasses import dataclass
from operator import attrgetter

@dataclass
class CycleItem:
    type: str
    days: int

lists = json.loads("[" + data + "]")
obj_list = [CycleItem(**item) for item in lists]
maintenance_cycle = min(obj_list, key=attrgetter('days'))

内容的提问来源于stack exchange,提问作者Stéphane GRILLON

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:24:03