我需要将一系列变量定义为零,然后在程序的其余部分计算一堆不同情况的实例时对其进行更新。
我不知道为什么不能像下面一样设置它,但是不管我把这个结构放在哪里,IDLE都说存在语法错误并突出显示2bktools
的第一个实例。 / p>
import os
import csv
os.chdir('/Users/me/Desktop/SubjError')
for subject in ['100307', '100408', '101107', '101309', '101915']:
2bktools = 0
0bkbody = 0
2bkfaces = 0
0bktools = 0
2bkbody = 0
2bkplaces = 0
0bkfaces = 0
0bkplaces = 0
#counts and updates instances of each variable
我认为必须有一种更有效的方法来将一系列变量设置为零,但是我不知道它会是什么。
答案 0 :(得分:3)
在Python中,变量名不能以数字开头。
无论如何,对于您的用例,我认为嵌套的dict
会很有用:
from pprint import pprint
subjects = ['100307', '100408', '101107', '101309', '101915']
keys = ['2bktools', '0bkbody', '2bkfaces', '0bktools', '2bkbody', '2bkplaces', '0bkfaces', '0bkplaces']
data = {subject: {key: 0 for key in keys} for subject in subjects}
pprint(data)
输出:
{'100307': {'0bkbody': 0,
'0bkfaces': 0,
'0bkplaces': 0,
'0bktools': 0,
'2bkbody': 0,
'2bkfaces': 0,
'2bkplaces': 0,
'2bktools': 0},
'100408': {'0bkbody': 0,
'0bkfaces': 0,
'0bkplaces': 0,
'0bktools': 0,
'2bkbody': 0,
'2bkfaces': 0,
'2bkplaces': 0,
'2bktools': 0},
... more of the same...
然后,您可以使用标准索引语法访问所需的任何属性;例如data['100307']['2bktools']
。
答案 1 :(得分:2)
您正在尝试定义以数字开头的变量。您无法在python中做到这一点。
Here is some info准确说明了变量名的结构方式。