gpt4 book ai didi

python - 如何检查dict是否是另一个复杂dict的子集

转载 作者:行者123 更新时间:2023-12-04 08:48:36 24 4
gpt4 key购买 nike

我需要验证另一个 dict 是否是另一个 dict 的子集,有一个技巧,在这些 dicts 中有一个 dict 数组。
超集:

   dct_1 = {
'x': 'x',
'y': [
{
't': '123',
'a': 'a'
}
]
}
子集:
dict_2 = {
'x': 'x',
'y': [
{
't': '123'
}
]
}
来自 Recursive function to check dictionary is a subset of another dictionary回答我收到此错误:
TypeError: unhashable type: 'dict'
我的代码:
def is_subset(superset, subset):
for key, value in subset.items():
if key not in superset:
return False

if isinstance(value, dict):
if not is_subset(superset[key], value):
return False

elif isinstance(value, str):
if value not in superset[key]:
return False

elif isinstance(value, list):
if not set(value) <= set(superset[key]):
return False
elif isinstance(value, set):
if not value <= superset[key]:
return False

else:
if not value == superset[key]:
return False

return True


class Test(unittest.TestCase):

def setUp(self):
self.dct = {
'x': 'x',
'y': [
{
't': '123',
'a': 'a'
}
]
}

def check_is_subset_true(self, superset, subset):
return self.assertEqual(is_subset(superset, subset), True)

def test_is_true(self):
self.check_is_subset_true(self.dct, {
'x': 'x',
'y': [
{
't': '123'
}
]
})

最佳答案

这是一种方法,是否足以满足您的用例?

def is_subset(superset, subset):
if type(superset) != type(subset):
return False

if isinstance(subset, dict):
for key, value in subset.items():
try:
if not is_subset(superset[key], value):
return False
except KeyError:
return False

elif isinstance(subset, list):
for sub_e, super_e in zip(subset, superset):
if not is_subset(super_e, sub_e):
return False

else:
if superset != subset:
return False

return True


is_subset(dict_1, dict_2)
# True

关于python - 如何检查dict是否是另一个复杂dict的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64184040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com