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

2024-10-03 17:16:26 发布

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

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

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

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}}}

我怎样才能只增加一本字典


Tags: 数据声明数据结构字典方式分类变体copy
1条回答
网友
1楼 · 发布于 2024-10-03 17:16:26

你需要一个^{}

使用:

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

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

相关问题 更多 >