我在用python更新字典中的值时遇到问题。我试图为一个第一级键更新一个嵌套值(可以是int或list),但是我更新了所有一级键的值。在
我从创建字典开始:
kmerdict = {}
innerdict = {'endcover':0, 'coverdict':{}, 'coverholder':[], 'uncovered':0, 'lowstart':0,'totaluncover':0, 'totalbases':0}
for kmer in kmerlist: # build kmerdict
kmerdict [kmer] = {}
for chrom in fas: #open file and read line
chromnum = chrom[3:-3]
kmerdict [kmer][chromnum] = innerdict
然后我从一个列表(fas,未显示)中遍历染色体(纯文本文件),并以7mer字符串(k=7)为键。如果该键在我要查找的键列表(kmerlist)中,并尝试使用该键引用字典中嵌套的单个值:
^{pr2}$但是当我打印字典时,所有的“thiskmer”级别都会更新为相同的值。我对字典不是很在行,我看不出我的错误,但它们是深刻的!有人能启发我吗?在
希望我已经足够清楚了。我已经修改这个代码太久了:(
我没有花时间去弄清楚你所有的代码,只是第一部分。第一个问题是在设置中:
创建
^{pr2}$innerdict
一次,然后继续重复使用同一个字典。换句话说,每个kmerdict[kmer][chromnum]
引用相同的对象。也许把最后一行改成:会有帮助(在文件顶部适当导入
copy
)?或者,您可以将innerdict
的创建移动到内部循环中,如注释所示:我决定使用一个函数使它更易于阅读:)。在
相关问题 更多 >
编程相关推荐