检查嵌套字典是否存在

时间:2019-11-05 14:21:34

标签: python dictionary nested

我知道如何在字典中检查键或值是否存在。
如果您有一个NESTED词典,那么在我将另一个词典添加到外部词典之前,有没有办法检查它是否已经存在? 也就是说,如果在将另一个字典D添加到外部A之前,外部字典A包含嵌套字典B,C,如何检查A中是否已经存在名称为D的字典? TIA

1 个答案:

答案 0 :(得分:0)

您的问题不太清楚。我尝试涵盖所有我能想到的情况:

检查候选对象是否不包含在父对象中

您可以通过使用父字典的values()方法来检查给定字典是否在父字典的值中。请注意,这不会检查键的顺序,因为字典的键只是没有特定的(固定或“冻结”)顺序,并且两个字典被认为是相等的,而与它们的键顺序无关:< / p>

parent = {
   "b": {
        "hey": "ho",
        "let's": "go"
   },
   "c": {"another": "value"}
}

candidate = {
    "let's": "go",
    "hey": "ho"
}

然后:

>>> candidate in parent.values()
True

因此,如果我对您的问题理解正确,那么您可以通过以下方式获得想要的东西:

if candidate not in parent.values():
    parent["candidate"] = candidate

检查父级是否没有具有相同“名称”的子命令

但是,如果您实际上不想检查给定的字典是否在父字典中,而只想检查父字典中是否存在与 name 相同的嵌套字典。候选字典,只需查找父字典的items()

if not "candidate" in parent:  # this is equal to 
# if not "candidate" in parent.items():
    parent["candidate"] = candidate

检查父级是否没有具有相同“名称”或内容的子命令

最后,如果要检查这两个条件,即要检查父dict中是否有嵌套的dict,其内容或名称与给定的候选dict相等,则只需组合两个条件:

if not "candidate" in parent and not candidate in parent.values():
    parent["candidate"] = candidate