我正在尝试做如下操作。如果循环条件上的"if语句"匹配,我想使用"if"语句中的一个参数进行增量。
value = [0,1,2,3,4,5,6]
data = {'value': 3, 'foo': 'foo'}
for value in value:
if (int(data['value']) == value and data['foo'] == 'foo'):
findings_score[value] = findings_score[value] + 1
我正试图在python上执行此操作,但由于需要初始化值"findings_score[value]"`,因此出现了一个错误。我可以通过单独初始化findings_score[value]dict来做到这一点,但我想了解这里的最佳方法。
`错误-名称错误:未定义全局名称"findings_score[value]"
使用defaultdict,在循环外初始化dict:
from collections import defaultdict
findings_score = defaultdict(int)
values = [0,1,2,3,4,5,6]
for value in values:
if int(data['value']) == value and data['foo'] == 'foo':
findings_score[value] += 1
使用普通dict,您可以使用dict.setdefault或dict.get:
findings_score = {}
values = [0,1,2,3,4,5,6]
for value in values:
if int(data['value']) == value and data['foo'] == 'foo':
findings_score[value] = findings_score.get(value, 0) + 1
findings_score = {}
values = [0,1,2,3,4,5,6]
for value in values:
if int(data['value']) == value and data['foo'] == 'foo':
findings_score.setdefault(value, 0)
findings_score[value] += 1
如果你想让值中的所有元素都在输出中,你可以使用dict.fromkeys:
findings_score = dict.fromkeys(values,0)
for value in values:
if int(data['value']) == value and data['foo'] == 'foo':
findings_score[value] += 1
听起来这就是你想要的:
values = [0,1,2,3,4,5,6]
findings_score = {}
data = {'value': 3, 'foo': 'foo'}
for value in values:
if (int(data['value']) == value and data['foo'] == 'foo'):
if value in findings_score:
findings_score[value] = findings_score[value] + 1
else:
findings_score[value] = 1