为什么我的with语句无法正确执行?

时间:2018-11-26 07:32:27

标签: python loops

我有一个代码,如下所示,它包含一个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分配的位置,也会发生相同的情况,后者工作正常,但前者不会发生。

有人知道发生了什么吗?我很确定缩进是正确的。

1 个答案:

答案 0 :(得分:0)

变量snp无法访问变量行,因为snp不在for循环内。您需要为snp提供意图。我希望这会有所帮助。