它可能用正则表达式断言?
示例:dict
{
"mimetype": "application/json",
"status_code": 200,
"data": {
"id": 1,
"username": "foo",
"access_token": "5151818748748"
}
}
with:key access_token
{
"mimetype": "application/json",
"status_code": 200,
"data": {
"id": 1,
"username": "foo",
"access_token": "(.+)"
}
}
答案 0 :(得分:1)
假设我理解正确:
import re
def assert_dict(template, thing):
if len(template) != len(thing):
raise AssertionError("Assertion failed")
for key in template:
if isinstance(template[key], dict):
assert_dict(template[key], thing[key])
else:
if template[key] == thing[key]:
continue
elif re.fullmatch(template[key], thing[key]):
continue
else:
raise AssertionError("Assertion failed")
检查它们是否具有相同的键值对,如果是,则首先测试它们是否相同,如果不相同,则检查第二个是否与第一个匹配。
只要词典中没有什么花哨的东西,这就可以了。列表将起作用,但不会在列表中使用,尽管实现它也是相当简单的。