我如何使用两个不同函数的值匹配的函数?

时间:2016-06-29 18:53:43

标签: python python-2.7

我在尝试使用每个函数的值并将它们组合在一起时遇到了麻烦。我在每个函数中都有局部变量,我想在不同的函数中使用它,只要它们的主要(类别)相互匹配,我就会将每个值分开。我目前有:

counters = {}

def participated():
    for line in reader:
        if int(line[6]) > 0:
            primary = line[7].strip('[]')
            counters.setdefault(primary, 0)
            counters[primary] += 1

    for k, v in counters.items():
        print(k, v)

def generalNumber():
    for line in reader:
        primary = line[7].strip('[]')
        counters.setdefault(primary, 0)
        counters[primary] += 1

    for k, v in counters.items():
        print(k, v)

我如何从每个函数中v开始并使用counter.item()来分隔彼此,如:

success_percentage = v from participated() / v from generalNumber ()

,其中

participated().primary = generalNumber().primary 

1 个答案:

答案 0 :(得分:2)

为每个函数设置counter dict,并在函数中return counter

def participated():
    counters = {}
    for line in reader:
        if int(line[6]) > 0:
            primary = line[7].strip('[]')
            counters.setdefault(primary, 0)
            counters[primary] += 1

    for k, v in counters.items():
        print(k, v)
    return counter

def generalNumber():
    counters = {}
    for line in reader:
        primary = line[7].strip('[]')
        counters.setdefault(primary, 0)
        counters[primary] += 1

    for k, v in counters.items():
        print(k, v)
    return counter

然后调用函数并使用返回的字典执行除法,如下所示:

counter_p = participated()
counter_g = generalNumber()

# here you have a list of success percentages
success_percentage = [counter_p.get(primary)/counter_g.get(primary, 1) for primary in counter_p]

我在get中使用了1默认counter_g.get(primary, 1),因此如果primary中存在counter_pcounter_g中不存在1,代码不会中断,但会以静默方式返回{{1}}。