import spssaux, spss, collections
from operator import itemgetter
from collections import Counter
def create_vars():
vdict=spssaux.VariableDict()
varlist = ['ID','ID2', 'Var1','Var2', 'Var3', 'Var4']
donthave=[v for v in varlist if v not in vdict]
for i in range(len(donthave)):
myvar=donthave[i]
spss.Submit(r'NUMERIC %s' %(myvar))
#spss.Submit(r'ALTER TYPE %s (ADATE10)' %(myvar))
def repeat(lst, dt1, dt2, dt3, dt4):
if dt1: date=dt1
elif dt2: date=dt2
elif dt3: date=dt3
elif dt4: date=dt4
else: date=None
for i in range(len(lst)):
lst[i].append(date)
def rcnv():
index=spssaux.VariableDict().VariableIndex
v_idx=[index(v) for v in varlist]
vals = [None] * len(v_idx)
row_to_all=[]
for i,v in enumerate(v_idx):
row_to_all.append(i)
cur=spss.Cursor(var=v_idx, accessType='w')
#cvtDates="ALL"
for i in range(cur.GetCaseCount()):
row=cur.fetchone()
for i,v in enumerate(row):
j=row_to_all[i]
vals[j]=v
(ID1, ID2, Var1, Var2, Var3, Var4) = vals
lst=[]
lst.append([UniqueDefID.rstrip()])
for i,v in enumerate(lst):
print(i)
rcnv()
create_vars()
我正试图重写某人的旧代码以合并新信息。enumerate
部分对于代码的其余部分看起来非常重要,因此我正在尝试找出如何让它工作
无论何时我尝试做:
for i,v in enumerate(lst):
print(i)
我的输出是:
0
0
0
0
0
0
0
0
但预期的结果是:
0
1
2
3
4
5
6
7
有什么建议吗
看起来您的有问题的循环嵌套在另一个已经使用
i
作为索引计数器的循环中。因此,您实际上是在引用顶层i
。尝试将i
更改为嵌套循环中的其他内容,它应该可以工作你有两个嵌套的循环,在外部,你在循环你的案例计数,但在循环中,你在创建一个新的列表,在其中附加一个元素,然后在这个元素列表上循环;因此,您总是在那里获得第一个索引
(如前所述,您还将在那里跟踪您的外部
i
)相关问题 更多 >
编程相关推荐