Python中如何嵌套合并键重复的DNA、RNA字典实现正常取值
这个需求完全可以实现,不需要修改原有字典的重复键,直接嵌套成二级字典结构是最简便的方案,具体实现如下:
方案1:二级字典嵌套(最推荐)
直接把DNA、RNA作为一级分类键,原有两个字典整体作为对应的值即可,原有字典的内部键不需要做任何修改:
# 原有两个字典保持不变 Number_As = 1 DNAdict = { 'A': ['dAMP',1,..., '其他值'], 'C': ['dCMP',2,..., '其他值'], 'T': ['dTMP',3,..., '其他值'], 'G': ['dGMP',4,..., '其他值'] } RNAdict = { 'A': ['AMP',5,..., '其他值'], 'C': ['CMP',6,..., '其他值'], 'U': ['UMP',7,..., '其他值'], 'G': ['GMP',8,..., '其他值'] } # 构建嵌套的总字典 nucleic_acid_dict = { 'DNA': DNAdict, 'RNA': RNAdict }
访问方式也符合你原来的使用逻辑,分类清晰不会冲突:
# 计算DNA的A对应的能量 energy_dna_a = Number_As * nucleic_acid_dict['DNA']['A'][1] # 结果为1 # 计算RNA的A对应的能量 energy_rna_a = Number_As * nucleic_acid_dict['RNA']['A'][1] # 结果为5
方案2:元组作为唯一键(可选)
如果不想用二级结构,也可以把「分子类型+碱基」组合成元组作为唯一键,同样不需要修改原有键名:
merged_dict = {} # 批量存入DNA相关键值 for base, info in DNAdict.items(): merged_dict[('DNA', base)] = info # 批量存入RNA相关键值 for base, info in RNAdict.items(): merged_dict[('RNA', base)] = info # 访问示例 energy_dna_a = Number_As * merged_dict[('DNA', 'A')][1]
两种方案都不需要修改原有碱基对应的键名,更推荐第一种二级字典的方式,后续如果要新增其他核酸类型只要加一级键即可,维护成本更低。
内容的提问来源于stack exchange,提问作者Edwin OA
相关产品推荐
相关产品推荐

