首页 > 解决方案 > 迭代一组列表以找到 Python 中的最高平均值

问题描述

如何创建迭代每个县的函数,计算选民投票率?

class County:  
    def __init__(self, init_name, init_population, init_voters) :  
        self.name = init_name  
        self.population = init_population  
        self.voters = init_voters   

def highest_turnout(data) :  

    100 * (self.voters / self.population)

allegheny = County("allegheny", 1000490, 645469)  
philadelphia = County("philadelphia", 1134081, 539069)  
montgomery = County("montgomery", 568952, 399591)  
lancaster = County("lancaster", 345367, 230278)  
delaware = County("delaware", 414031, 284538)  
chester = County("chester", 319919, 230823)  
bucks = County("bucks", 444149, 319816)  
data = [allegheny, philadelphia, montgomery, lancaster, delaware, chester, bucks]  

标签: pythonlistaverage

解决方案


您的课程County定义正确。但是,功能county不正确。

在函数中传递数据时highest_turnout,您必须首先计算County列表第一个中选民的百分比 - 它位于data[0]. 然后我们将“highest”设置为第一个的国家名称County,我们假设data列表中的第一个是我们见过的最高的。

接下来,我们使用for循环开始迭代County列表data中的所有对象,以便传入每个County对象。

该变量为我们提供了当前步骤中正在运行pct的投票者的百分比。Countyif函数将其与存储在变量中的最高百分比进行比较pct。如果新百分比高于pct(返回 True),我们更新最高百分比变量pct,从而更新县名。

def highest_turnout(data) :

  highest_pct = data[0].voters / data[0].population
  highest = data[0].name

  for county in data :
    pct = county.voters / county.population
    if pct > highest_pct :
      highest_pct = pct
      highest = county.name

推荐阅读