使用 for 循环比较当前值是否小于先前值
Using a for loop to compare if current value is less than previous
背景:
我正在使用 2 部词典。出于我的目的,第一个 governor_db 是一个包含州长姓名作为键的字典,值只是一组信息,例如他们服务的年份等。第二个是包含年份的字典键和值是当年每个月的失业率(键)。
我目前在做什么:
我正在处理的函数调用了我之前用来计算每位州长在任期间的平均失业率的函数。我所拥有的(下面)是遍历州长的名字并将平均失业率拉入这个新函数,以便能够比较最低的平均失业率是多少以及谁是州长与那条信息。
到目前为止,我所拥有的要么遍历它并准确地给我最低失业率,但不会给出与该最低值相匹配的正确州长。
我现在的代码:
def governor_lowest_avg_unemployment(g_db,unemployment_db):
all_unemploy={}
for governor in g_db.keys():
avg_unemploy= avg_unemployment_for_governor(g_db,unemployment_db, governor)
if avg_unemploy==None:
all_unemploy[governor]=0
else:
all_unemploy[state]= avg_unemploy
lowest_avg= min(all_unemploy.values())
for key, value in all_unemploy.items():
if value == lowest_avg:
lowest_gov= key,value
return(lowest_gov)
我想尝试做的是,当我遍历该字典及其相应的失业值(存储在上面的字典 all_unemploy 中)时,我希望能够存储以前的值和比较我正在迭代的新值是否小于前一个值。如果新值小于前一个值,我想用新值替换前一个值,直到它停止遍历字典并给我最低平均值的正确元组组合:(州长,平均失业率)
我开始的想法是做如下的事情。我不确定如何实现它:
for key, value in all_unemploy:
if value> previous
pass
elif value == previous
pass
elif value = None
pass
elif value < previous
lowest = key, value
return lowest
None 在这种情况下只是意味着对于之前的功能,失业数据库中没有足够的信息来计算该州长的平均失业率。
我怎样才能像这样比较这些值,并最终得到准确的最低值?我实施这种事情的想法是否走在正确的轨道上?
如果我正确理解了您要执行的操作,则以下代码应该适合您:
def governor_lowest_avg_unemployment(g_db,unemployment_db):
all_unemploy = {}
lowest_avg = 1e99 # some huge number, obviously above max possible
lowest_gov = None
for governor in g_db.keys():
avg_unemploy = avg_unemployment_for_governor(g_db,unemployment_db, governor)
if avg_unemploy==None:
all_unemploy[governor]=0
else:
all_unemploy[governor] = avg_unemploy
if avg_unemploy < lowest_avg:
lowest_avg = avg_unemploy
lowest_gov = governor
return lowest_gov
背景:
我正在使用 2 部词典。出于我的目的,第一个 governor_db 是一个包含州长姓名作为键的字典,值只是一组信息,例如他们服务的年份等。第二个是包含年份的字典键和值是当年每个月的失业率(键)。
我目前在做什么:
我正在处理的函数调用了我之前用来计算每位州长在任期间的平均失业率的函数。我所拥有的(下面)是遍历州长的名字并将平均失业率拉入这个新函数,以便能够比较最低的平均失业率是多少以及谁是州长与那条信息。
到目前为止,我所拥有的要么遍历它并准确地给我最低失业率,但不会给出与该最低值相匹配的正确州长。
我现在的代码:
def governor_lowest_avg_unemployment(g_db,unemployment_db):
all_unemploy={}
for governor in g_db.keys():
avg_unemploy= avg_unemployment_for_governor(g_db,unemployment_db, governor)
if avg_unemploy==None:
all_unemploy[governor]=0
else:
all_unemploy[state]= avg_unemploy
lowest_avg= min(all_unemploy.values())
for key, value in all_unemploy.items():
if value == lowest_avg:
lowest_gov= key,value
return(lowest_gov)
我想尝试做的是,当我遍历该字典及其相应的失业值(存储在上面的字典 all_unemploy 中)时,我希望能够存储以前的值和比较我正在迭代的新值是否小于前一个值。如果新值小于前一个值,我想用新值替换前一个值,直到它停止遍历字典并给我最低平均值的正确元组组合:(州长,平均失业率)
我开始的想法是做如下的事情。我不确定如何实现它:
for key, value in all_unemploy:
if value> previous
pass
elif value == previous
pass
elif value = None
pass
elif value < previous
lowest = key, value
return lowest
None 在这种情况下只是意味着对于之前的功能,失业数据库中没有足够的信息来计算该州长的平均失业率。
我怎样才能像这样比较这些值,并最终得到准确的最低值?我实施这种事情的想法是否走在正确的轨道上?
如果我正确理解了您要执行的操作,则以下代码应该适合您:
def governor_lowest_avg_unemployment(g_db,unemployment_db):
all_unemploy = {}
lowest_avg = 1e99 # some huge number, obviously above max possible
lowest_gov = None
for governor in g_db.keys():
avg_unemploy = avg_unemployment_for_governor(g_db,unemployment_db, governor)
if avg_unemploy==None:
all_unemploy[governor]=0
else:
all_unemploy[governor] = avg_unemploy
if avg_unemploy < lowest_avg:
lowest_avg = avg_unemploy
lowest_gov = governor
return lowest_gov