【问题标题】:Update dictionary with nested dictionary使用嵌套字典更新字典
【发布时间】:2021-04-10 13:10:27
【问题描述】:

我有这个 json 文件用于列出 material by ref -> color 和 size:

{
    "base": {
        "ref": {
            "3021000": {
                "color": {
                    "bleu azur": {
                        "size": {
                            "01": "3021000-80300-01",
                            "13": "3021000-80300-13",
                            "12": "3021000-80300-12",
                            "36": "3021000-80300-36"
                        }
                    }
                }
            }
        },
        "customer_ref": {}
    }
}

通过一个程序,我将json 加载为dict 并搜索dict 以尝试找到与大小值对应的完整参考(材料3021000 bleu azur 01 的完整参考是@ 987654330@

它就像一个魅力,但现在,如果我有一个 material 和:ref=3021000、color=blanc 和 size=01,它在字典中不存在,所以我想插入缺失的key - value:{"blanc": {"size": {"01": "corresponding full ref"}}}

我试过了:

ref = "3021000"
color = "blanc"
size = "01"
full_ref = "corresponding full ref"
missing_data = {ref: {"color": {color: {"size": {size: full_ref}}}}}
data["base"]["ref"] = missing_data

但它会覆盖字典;我想要的是更新字典,而不是覆盖它。

【问题讨论】:

  • 在 2021 年,您可能应该忽略 Python 2,而将时间花在当前推荐和支持的语言版本上,即 Python 3。
  • 这不是帖子的主题,如果可以的话,我不会使用旧的 python 2。
  • 如果您不告诉我们,我们就无法知道这一点。我的建议是包括一个简短的理由,说明为什么这些天在发布 Python 2 问题时不能使用 Python 3,继续前进(只要这些 cmets 留在这里,就不需要这个问题)。我们仍然从不知道 Python 2 已死的人那里得到源源不断的问题。
  • 这与问题无关,存在标签“python-2.7”,我期待与我的python版本相对应的答案,更改python版本不是有效的解决方案。我同意它“过时”,但我使用的是使用 jython 2.7.2 的 Sikuli。

标签: python json python-2.7


【解决方案1】:

这个怎么样?

import json

d = {
    "base": {
        "ref": {
            "3021000": {
                "color": {
                    "bleu azur": {
                        "size": {
                            "01": "3021000-80300-01",
                            "13": "3021000-80300-13",
                            "12": "3021000-80300-12",
                            "36": "3021000-80300-36"
                        }
                    }
                }
            }
        },
        "customer_ref": {}
    }
}

ref = "3021000"
color = "blanc"
size = "01"
full_ref = "corresponding full ref"
missing_data = {color: {"size": {size: full_ref}}}
d["base"]["ref"][ref]["color"].update(missing_data)
print(json.dumps(d, indent=2))

输出:

{
  "base": {
    "ref": {
      "3021000": {
        "color": {
          "bleu azur": {
            "size": {
              "01": "3021000-80300-01",
              "13": "3021000-80300-13",
              "12": "3021000-80300-12",
              "36": "3021000-80300-36"
            }
          },
          "blanc": {
            "size": {
              "01": "corresponding full ref"
            }
          }
        }
      }
    },
    "customer_ref": {}
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2015-10-22
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多