为什么with语句执行不正确?

2024-04-18 23:51:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码,如下所示,它由一个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赋值的位置,也会发生同样的情况,后者工作正常,但前者不会发生。你知道吗

有人知道发生了什么事吗?我确信压痕是正确的。。你知道吗


Tags: 代码inforreadinputaswithline