【发布时间】:2021-01-18 20:50:12
【问题描述】:
我需要验证另一个字典是否是另一个字典的子集,有一个技巧是在这些字典中有一个字典数组。
超集:
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'
}
]
})
【问题讨论】:
-
你在哪一行得到错误信息?
标签: python dictionary