首页 > 解决方案 > 如何通过在 Python 中调用函数来查找对象列表中的最大值

问题描述

我想在 python 中定义一个函数,它返回对象列表中计算变量的最大值。我首先创建了一个类并定义了新变量来计算人均 GDP(以千计)(self.percapita = 1000 * self.gdp / self.population):

class Country():    
  def __init__(self, name, population, gdp) :
    self.name = name
    self.population = population
    self.gdp = gdp
    self.percapita = 1000 * self.gdp / self.population

我输入实例列表:

unitedstates = Country("unitedstates", 326766748, 19390600)
china = Country("china", 1415045928 , 12014610)
japan = Country("japan", 127185332, 4872135)

list = [unitedstates, china, japan]

我需要你的帮助来创建一个函数,该函数返回人均最高的国家和一个包含国家名称和人均值的元组:

 def highest_percapita(list) :

我知道以下代码会生成所需的输出,但我需要创建上述函数:

 from operator import attrgetter
 highest_percapita = max(list, key=attrgetter('percapita'))
 print(highest_percapita.name)
 print(highest_percapita.name, highest_percapita.percapita)

谢谢!

标签: pythonclassmax

解决方案


这应该这样做:

from operator import attrgetter


class Country():
    def __init__(self, name, population, gdp):
        self.name = name
        self.population = population
        self.gdp = gdp
        self.percapita = 1000 * self.gdp / self.population


def highest_percapita(list) :
    return max(list, key=attrgetter('percapita'))

unitedstates = Country("unitedstates", 326766748, 19390600)
china = Country("china", 1415045928 , 12014610)
japan = Country("japan", 127185332, 4872135)

lst = [unitedstates, china, japan]

print(highest_percapita(lst).name)

输出

unitedstates

推荐阅读