【问题标题】:I want find min element of object by attribute in a list of objects in Python我想在 Python 中的对象列表中按属性查找对象的最小元素
【发布时间】:2021-10-18 13:12:43
【问题描述】:

我想在 Python 的对象列表中找到对象的最小元素(通过days 属性),到目前为止我有这个代码:

from operator import attrgetter
    
lists = json.loads("[" + data + "]")
print(lists)
maintenance_cycle = min(lists,key=lambda r: r.days)
  • 控制台输出:
[{'type': 'runtime', 'days': 1}]
  • 错误:
'dict' object has no attribute 'days'

【问题讨论】:

  • 使用min(lists, key=lambda r: r['days']) 或者min(lists, key=lambda r: r.get('days')) 怎么样。
  • @GhostOps,你确定吗?你的第一个建议听起来不错。 maintenance_cycle = min(lists,key=lambda r: r['days'])
  • @StéphaneGRILLON 我知道不是,现在我失去了编辑该评论的时间,所以让我删除评论,JonSG 得到了你想要的
  • @StéphaneGRILLON 您想要一个专门使用operator 模块的解决方案吗?
  • @GhostOps 如果您给出一个答案,因为看起来您可能从一开始就拥有所需的东西,我将删除我的 cmets。

标签: json python-3.x object attributes


【解决方案1】:

访问字典键不像访问类方法

试试这个代码

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

或者

maintenance_cycle = min(lists, key=lambda r: r.get('days'))

代替

maintenance_cycle = min(lists,key=lambda r: r.days)

如果它不起作用,请告诉我......

【讨论】:

  • 我的代码需要这个:min(recurrences, key=lambda r: r['days'])['days'] 但你的回答帮助了我。谢谢
  • @Stéphane GRILLON 发生了什么?
  • 对不起,lists 在此示例中。 min(lists, key=lambda r: r['days'])['days']
猜你喜欢
  • 2022-07-12
  • 2014-08-04
  • 2023-03-16
  • 2016-04-03
  • 2023-03-16
  • 2018-07-09
  • 2019-09-14
  • 2021-03-05
  • 1970-01-01
相关资源
最近更新 更多