首页 > 解决方案 > 如何使用 Python 中的对象来执行函数并获得答案?

问题描述

我是 Python 和 oop 的新手。对于一项研究,我试图将使用 excel 数据形成的 Python 对象传递给一个函数并获得答案并找到最小值。我已经创建了从 excel 数据到字典的对象,但我不明白如何继续使用该功能。

例如:我有 4 种具有不同属性的不同类型的容器。

Type  Investment($) Lifespan 

T1        20           10   
T2        30            25   
T3        10            7    
T4        15            8 

字典是这样的。

{'T1' : {'Investment' : 20, 'Lifespan' : 10}, 'T2' : {'Investment' : 30, 'Lifespan' : 25}, 'T3' : {'Investment' : 10, 'Lifespan' : 7}, 'T4':{'Investment' : 15, 'Lifespan' : 8}}

所以我需要使用预定义的 LCC 方程计算每种类型的生命周期成本并找到最小答案(这只是一个简单的版本,研究范围更大)。我不明白我需要如何将对象字典传递给函数并获得最小值。任何帮助,将不胜感激。

标签: pythonoopoptimization

解决方案


您之前可能没有听说过 lambda,但它们在这里可能非常有用。

def minItem(d: dict):
    return min(d, key=lambda k: d[k]['Lifespan'])

这将根据您的子字典的'Lifespan'键对字典进行排序。k是每个字典项的键(即'T1', 'T2', ...)。访问d[k]['Lifespan']告诉 Python根据该特定键找到最小值。因此,它将比较d['T1']['Lifespan'], d['T2']['Lifespan'], ... 对每个项目进行排序,找到最小的元素。

>>> def minItem(d: dict):
        return min(d, key=lambda k: d[k]['Lifespan'])

>>> data={'T1' : {'Investment' : 20, 'Lifespan' : 10}, 'T2' : {'Investment' : 30, 'Lifespan' : 25}, 'T3' : {'Investment' : 10, 'Lifespan' : 7}, 'T4':{'Investment' : 15, 'Lifespan' : 8}}
>>> minItem(data)
T3
>>> data[minItem(data)]
{'Investment': 10, 'Lifespan': 7}

推荐阅读