【问题标题】:How to combine nested dictionaries in for loop如何在for循环中组合嵌套字典
【发布时间】:2021-11-11 07:11:21
【问题描述】:

我对 python 中的嵌套字典有疑问。

我有两个字典,dict1dict2dict2 包含一些定义 (nested_dict_a/_b/_c/_d),这些定义在 dict1 的最后一级重复使用(这就是为什么我将它们放在单独的字典中)。

dict1 = {
    'nested_dict_1':  {
         'x': ['nested_dict_a', 'nested_dict_b'],
         'y': ['nested_dict_a', 'nested_dict_c'],
         'z': ['nested_dict_b', 'nested_dict_d']
    }
}

dict2 = {
    'nested_dict_1':  {
          'nested_dict_a': {
              1: {
                  'abc': 'bcd',
                  'cde': 'def'
                 },
              0: {
                  'efg': 'fgh',
                  'ghi': 'hij'
                 },
          },
          'nested_dict_b': {
              1: {
                  'ijk': 'jkl',
                  'klm': 'lmn'
                 },
              0: {
                  'mno': 'nop',
                  'opq': 'pqr'
                 },
          },
          'nested_dict_c': {
              1: {
                  'qrs': 'rst',
                  'stu': 'tuv'
                 },
              0: {
                  'uvw': 'vwx',
                  'wxy': 'xyz'
                 },
          },
          'nested_dict_d': {
              1: {
                  'abcd': 'bcde',
                  'cdef': 'defg'
                 },
              0: {
                  'efgh': 'fghi',
                  'ghij': 'hij'
                 },
          }
    }
}

我想将两个嵌套字典的信息合并到一个字典中,dict3dict3dict1 类似,只是替换列表中的值(即 'x''y', 'z') 以及来自 dict2 的相应字典(即 nested_dict_a/_b/_c/_d)。

dict3 中的

'x' 将如下所示:

     'x': {
          'nested_dict_a': {
              1: {
                  'abc': 'bcd',
                  'cde': 'def'
                 },
              0: {
                  'efg': 'fgh',
                  'ghi': 'hij'
                 },
          },
          'nested_dict_b': {
              1: {
                  'ijk': 'jkl',
                  'klm': 'lmn'
                 },
              0: {
                  'mno': 'nop',
                  'opq': 'pqr'
                 },
          }
     }

“y”和“z”的过程类似。

我相信我已经设置了正确的 for 循环:

for a in dict1:
    for b in dict1[a]:
        for c in dict1[a][b]:
            for d in dict2[a][c]:

但是,我不知道如何从四个循环中的局部变量中创建嵌套字典。

这样的事情不起作用:

{a: {dict1[a]: {dict1[a][b]: {dict2[a][c]: d}}}}

【问题讨论】:

    标签: python dictionary for-loop


    【解决方案1】:

    使用 for 循环迭代 dict1 并使用 dict2 的引用创建一个新的字典。

    dict3 = {}
    # k1: nested_dict_1, v1: Object
    for k1, v1 in dict1.items():
      dict3[k1] = {}
      for k11, v11 in v1.items():
        # k11: x, v11: array
        dict3[k1][k11] = {}
        for v111 in v11:
          # v111: nested_dict_a
          # Using k1 and v111 access the object from dict2 and use it in th new dict
          dict3[k1][k11][v111] = dict2[k1][v111]
    
    print(dict3)
    

    【讨论】:

    • 非常感谢!!这非常有效!不知道我是否会得到那个。相当令人印象深刻!
    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2020-04-08
    • 2019-01-11
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多