【问题标题】:Nesting dictionary of dictionaries字典的嵌套字典
【发布时间】:2021-12-20 05:38:58
【问题描述】:

我正在尝试嵌套两个字典,也许只制作一个字典字典更容易,但是,我有不同值的相同键,只是更改键更容易还是有办法嵌套这些两个?

Number_As = 1

#DNA dictionary
DNAdict = {
  'A': ['dAMP',1,..., other values],
  'C': ['dCMP',2,..., other values],
  'T': ['dTMP',3,..., other values],
  'G': ['dGMP',4,..., other values]}

#RNA dictionary
RNAdict = {
  'A': ['AMP',5,..., other values],
  'C': ['CMP',6,..., other values],
  'U': ['UMP',7,..., other values],
  'G': ['GMP',8,..., other values]}

然后我尝试访问不同计算的单个值:

Energy of DNA_A = Number_As * DNAdict['A'][1]

Energy of DNA_A = 1

or 

Energy of RNA_A = Number_As * RNAdict['A'][1]

Energy of RNA_A = 5

但我希望只有一个字典,然后尽管名称相同,但可以访问每个键的不同值。有可能吗?

非常感谢!!

【问题讨论】:

  • 您希望输出是什么样的?
  • 我期望得到单独的结果,例如,DNAdict['A'][6] 在不同的方程中使用:A 能量 = A 的数量 * CA * DNAdict['A'][ 6]

标签: python dictionary nested


【解决方案1】:

你怎么知道你现在想使用哪个字典?如果您想在当前状态下几乎不控制 dict 的各个元素(例如,['dAMP',1,..., other values],您可以将 dict 的值设为列表列表并通过索引引用所需的元素。但是,如果您可以为每个元素分配一个唯一的名称,实际上您可以使用以下代码创建一个嵌套字典:

# Your current code goes here

acids = {'DNA': RNAdict, 'DNA': DNAdict}

# Then you can access a specific dict by
dna_a_energy = Number_As * acids['DNA']['A'][1]
rna_a_energy = Number_As * acids['RNA']['A'][1]

如果我理解正确的话。

【讨论】:

  • 非常感谢!这个语法非常有用!
【解决方案2】:

是的,所有的可能性,它的可能

1:硬编码:

grouped = {
'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,..., ]}
}

#acessing RNAdict a[0]

value = grouped['RNAdict']['A'][0]
print(value)

2:在代码中分组

#RNA dictionary
DNAdict = {
  'A': ['dAMP',1,..., ],
  'C': ['dCMP',2,..., ],
  'T': ['dTMP',3,..., ],
  'G': ['dGMP',4,..., ]}

#RNA dictionary
RNAdict = {
  'A': ['AMP',5,..., ],
  'C': ['CMP',6,..., ],
  'U': ['UMP',7,..., ],
  'G': ['GMP',8,..., ]}

grouped = {'DNAdict':DNAdict,'RNAdict':RNAdict}

#example of finding
value = grouped['RNAdict']['A'][0]
print(value)

3 添加前缀:


def add_prefix(elem:dict,prefix:str)->dict:
    new_dict = {}
    for key in elem.keys():
        new_dict[f'{prefix}_{key}'] = elem[key]
    return new_dict


DNAdict = {
  'A': ['dAMP',1,..., ],
  'C': ['dCMP',2,..., ],
  'T': ['dTMP',3,..., ],
  'G': ['dGMP',4,..., ]}

#RNA dictionary
RNAdict = {
  'A': ['AMP',5,..., ],
  'C': ['CMP',6,..., ],
  'U': ['UMP',7,..., ],
  'G': ['GMP',8,..., ]}

Dna = add_prefix(elem=DNAdict,prefix='DNA')
Rna = add_prefix(elem=RNAdict,prefix='RNA')
Nested= {**Dna, **Rna}

【讨论】:

    猜你喜欢
    • 2021-07-24
    • 2018-01-29
    • 1970-01-01
    • 2018-05-31
    • 2021-05-17
    • 2022-11-22
    • 2012-01-29
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多