gpt4 book ai didi

python - 在字典中查找对象属性的最大值

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:07 24 4
gpt4 key购买 nike

我有一个存储在字典中的对象集合,我想检索特定属性的最大值。对象是 cookies ​​(想想巧克力片),每个 cookies 都有自己的温度、热容量、批号等。批号描述了它与哪一组 cookies 一起离开 toastr 。

class Cookie:
def __init__(self, density, specificheat, batch):
self.rho = density
self.cp = specificheat
self.batch = batch
self.volume = 1.2e-5 # m^3
self.surfarea = 4.9e-3 # m^2
...

我想在字典中找到最大批号。我知道如果我使用列表这会很简单,我可以只使用 operator.attrgetter('batch') 对列表进行排序并获取值。然而,使用字典,这一行不起作用:

sorted(cookies, key=operator.attrgetter('batch'))

我可以设置一个 for 循环并遍历字典中的每个对象,但我觉得有更好的方法来做到这一点。我想避免切换到列表,因为我正在运行优化,将 cookie 分类到框中,当您不得不担心 2000 个 cookie 时,从字典中检索数据比从列表中检索数据更快。 (我使用 timeit() 对其计时)。我在 Stackoverflow 上寻找过类似的问题,但大多数问题似乎都在 javascript 中。我发现的 Python 问题是针对不像我的那样存储对象的字典。任何帮助将不胜感激!

最佳答案

您可以只对值使用最大值:

mx_batch =  max(cookies.values(), key=operator.attrgetter('batch')).batch

或者只使用类属性来保持最大值:

class Cookie:
mx = 0
def __init__(self, density, specificheat, batch):
self.rho = density
self.cp = specificheat
self.batch = batch
self.volume = 1.2e-5 # m^3
self.surfarea = 4.9e-3 # m^2
if batch > Cookie.mx:
Cookie.mx = batch

然后:

In [9]: c1 = Cookie(1, 120, 1)

In [10]: c2 = Cookie(2, 120, 4)

In [11]: c3 = Cookie(1, 120, 2)

In [12]: c4 = Cookie(1, 120, 1)

In [13]: print(Cookie.mx)
4

关于python - 在字典中查找对象属性的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com