Python 使用copy()正确声明唯一字典

Python 使用copy()正确声明唯一字典,python,dictionary,Python,Dictionary,我正在尝试读取测序数据并对包含的突变进行分类。我认为我遇到的问题是没有正确地声明每个嵌套字典,使它们是唯一的 这就是我创建数据结构的方式: 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(), 'onco

我正在尝试读取测序数据并对包含的突变进行分类。我认为我遇到的问题是没有正确地声明每个嵌套字典,使它们是唯一的

这就是我创建数据结构的方式:

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
中找到),则将其添加为:

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}}}
我怎样才能只增加一本字典呢?

你需要一本字典

使用:

所发生的事情是:当您执行
varDict.copy(..)
时,您正在复制
baseDict的副本的引用

使用:

发生的情况是:当您执行
varDict.copy(..)
时,您正在复制
baseDict的副本的引用

{'oncoSites':deepcopy(varDict), 'oncoGenes':deepcopy(varDict), 'TIIIRegions':deepcopy(varDict)}