【问题标题】:how to merge two data structure in python如何在python中合并两个数据结构
【发布时间】:2015-09-11 23:35:22
【问题描述】:

我有两个复杂的数据结构(即 _to 和 _from),我想用 _from 的相同实体覆盖 _to 的实体。 我已经给出了这个例子。

# I am having two data structure _to and _from
# I want to override _to from _from
_to = {'host': 'test',
       'domain': [
           {
               'ssl': 0,
               'ssl_key': '',
           }
       ],
       'x': {}
       }
_from = {'status': 'on',
         'domain': [
             {
                 'ssl': 1,
                 'ssl_key': 'Xpyn4zqJEj61ChxOlz4PehMOuPMaxNnH5WUY',
                 'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
             }
         ]
         }
### I want this output
_result = {'host': 'test',
           'status': 'on',
           'domain': [
               {
                   'ssl': 1,
                   'ssl_key': 'Xpyn4zqJEj61ChxOlz4PehMOuPMaxNnH5WUY',
                   'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
               }
           ],
           'x': {}
           }

用例 2:

_to = {'host': 'test',
       'domain': [
           {
               'ssl': 0,
               'ssl_key': '',
               'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq',
               "abc": [],
               'https': 'no'
           }
       ],
       'x': {}
       }
_from = {
         'domain': [
             {
                 'ssl': 1,
                 'ssl_key': 'Xpyn4zqJEj61ChxOlz4PehMOuPMaxNnH5WUY',
                 'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
             }
         ]
         }

dict.update(dict2) 对我没有帮助,因为这会删除 _to dict 中的额外键。

【问题讨论】:

标签: python dictionary recursion data-structures iterator


【解决方案1】:

很简单:

_to.update(_from)

【讨论】:

  • @user87005 - 对于用例 2(您在我发布答案后添加),尚不清楚在列表级别应该发生什么 - 如果应该合并、更新列表(根据哪些标准)。
【解决方案2】:

有一个陷阱如下:

_to = {'host': 'test',
       'domain': [
           {
               'ssl': 0,
               'ssl_key': '',
           }
       ],
       'x': {}
       }
_from = {'status': 'on',
         'domain': [
             {
                 'ssl': 1,
                 'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
             }
         ]
         }

_to['domain']['ssl_key']_to.update(_from) 时省略 如果你想深入更新,请查看Update value of a nested dictionary of varying depth

【讨论】:

  • 所需的输出在问题中。
  • 查看帖子:) 我在@user87005 之前遇到过同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2020-12-15
  • 1970-01-01
相关资源
最近更新 更多