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