使用for循环来比较当前值是否小于之前的值

时间:2016-04-17 00:46:22

标签: python loops dictionary comparison

背景

我使用了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中)时,我希望能够存储之前的值和比较我迭代的新值是否小于前一个值。如果新值小于前一个,我想用新的值替换前一个,然后去一个,直到它停止迭代字典并给我正确的元组合最低平均值:(总督,平均失业率)< / p>

我开始的想法是做类似以下的事情。我不知道如何实现它:

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

在这种情况下,没有一个意味着对于上一个函数,失业数据库中没有足够的信息来计算州长的平均失业率。

我如何比较这样的值,最终获得准确的最低值?我是否正确地想要实施这样的事情?

1 个答案:

答案 0 :(得分:0)

如果我理解你正在尝试做什么,下面的代码应该对你有用:

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