我有一个代码,如下所示,它包含一个with
块。
alleles=[]
pop = 1 + 4
snp=[]
# read in input file
with open("input.txt", 'r') as f:
for line in f:
alleles.append(line.split()[2]+line.split()[1]) # risk first, then ref. keep risk as second allele
snp = [{"riskall": line[1],"weight": float(line[4]),"freq": float(line[pop]),
line[1]+line[1]:(2*float(line[4]),(float(line[pop])*float(line[pop]))),
line[2]+line[1]:(float(line[4]),(2*(((1-float(line[pop]))*(float(line[pop])))))),
line[2]+line[2]:(0, ((1-float(line[pop]))*((1-float(line[pop])))))} for line in map(lambda x: x.split(),f)]
奇怪的是,snp
分配根本不起作用,导致数组为空。如果我切换for
循环和snp
分配的位置,也会发生相同的情况,后者工作正常,但前者不会发生。
有人知道发生了什么吗?我很确定缩进是正确的。
答案 0 :(得分:0)
变量snp无法访问变量行,因为snp不在for循环内。您需要为snp提供意图。我希望这会有所帮助。