我正在尝试阅读测序数据并对包含的突变进行分类。我认为我遇到的问题是没有正确地声明每个嵌套字典,因此它们是唯一的。
这就是我创建数据结构的方式:
baseDict = {'A':0, 'T':0, 'G':0, 'C':0}
varDict = {'A':baseDict.copy(), 'T':baseDict.copy(), 'G':baseDict.copy(), 'C':baseDict.copy()}
fullDict = {'oncoSites':varDict.copy(), 'oncoGenes':varDict.copy(), 'TIIIRegions':varDict.copy()}
然后我正在添加我读过的任何特定的突变:
fullDict['oncoSites'][j][k] += 1
问题在于,当我添加一个变异时,它被添加到多个词典中。例如,如果我在T
中找到C
的参考库和oncoSites
的{{1}}变体,请将其添加为:
fullDict['oncoSites'][T][C] += 1
我得到的输出是:
{'TIIIRegions': {'A': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'C': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'G': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'T': {'A': 0, 'C': 1, 'G': 0, 'T': 0}},
'oncoGenes': {'A': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'C': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'G': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'T': {'A': 0, 'C': 1, 'G': 0, 'T': 0}},
'oncoSites': {'A': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'C': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'G': {'A': 0, 'C': 0, 'G': 0, 'T': 0},
'T': {'A': 0, 'C': 1, 'G': 0, 'T': 0}}}
如何只增加一个字典?
答案 0 :(得分:2)
您需要deepcopy
。
使用:
{'oncoSites':deepcopy(varDict), 'oncoGenes':deepcopy(varDict), 'TIIIRegions':deepcopy(varDict)}
发生的事情是:当您执行varDict.copy(..)
时,您正在复制baseDict