Как найти максимальное значение в списке объектов, вызвав функцию в Python - PullRequest
0 голосов
/ 19 декабря 2018

Я хотел бы определить функцию в Python, которая возвращает максимальное значение вычисляемой переменной в списке объектов.Сначала я создал класс и определил новую переменную для расчета среднего ВВП на душу населения в тысячах (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]

Мне нужна ваша помощь, чтобы создать функцию, которая возвращает страну с самым высоким percapita и кортеж, который содержит название страны и значение percapita:

 def highest_percapita(list) :

IЗнайте, что следующий код генерирует желаемые выходные данные, но мне нужно создать вышеупомянутую функцию:

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

Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

Это должно сделать это:

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
...