我在尝试使用每个函数的值并将它们组合在一起时遇到了麻烦。我在每个函数中都有局部变量,我想在不同的函数中使用它,只要它们的主要(类别)相互匹配,我就会将每个值分开。我目前有:
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
答案 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_p
但counter_g
中不存在1
,代码不会中断,但会以静默方式返回{{1}}。