假設我有兩個這樣的字典:
dict_1 = {
"key_1": {
"key_1_1": "test",
"key_1_2": "test",
"key_1_3": "test",
"key_1_4": [
{
"key": "test",
"value": "test_value"
},
{
"key": "test",
"value": "test_value"
}
]
}
}
dict_2 = {
"key_1": {
"key_1_1": "test1",
"key_1_2": "test1",
"key_1_3": "test1",
"key_1_4": [
{
"key": "test1",
"value": "test_value1"
},
{
"key": "test1",
"value": "test_value1"
}
]
}
}
有沒有辦法可以比較這兩個字典并回傳 True 或 False。我努力了:
dict_1 == dict2
還有 deepdiff ,但它回傳值的差異。就我而言,字典結構相同,鍵名也相同,它應該回傳 True。我不在乎價值觀
uj5u.com熱心網友回復:
您可以創建一個函式,將物件中的所有標量值替換為虛擬值,例如 None。
dict_1 = {
"key_1": {
"key_1_1": "test",
"key_1_2": "test",
"key_1_3": "test",
"key_1_4": [
{
"key": "test",
"value": "test_value"
},
{
"key": "test",
"value": "test_value"
}
]
}
}
dict_2 = {
"key_1": {
"key_1_1": "test1",
"key_1_2": "test1",
"key_1_3": "test1",
"key_1_4": [
{
"key": "test1",
"value": "test_value1"
},
{
"key": "test1",
"value": "test_value1"
}
]
}
}
def just_keys(obj):
if isinstance(obj, dict):
return {k: just_keys(v) for k,v in obj.items()}
elif isinstance(obj, list):
return [just_keys(item) for item in obj]
else:
return None
def keys_equal(a,b):
return just_keys(a) == just_keys(b)
print(just_keys(dict_1))
print(just_keys(dict_2))
print(keys_equal(dict_1, dict_2))
結果:
{'key_1': {'key_1_1': None, 'key_1_2': None, 'key_1_3': None, 'key_1_4': [{'key': None, 'value': None}, {'key': None, 'value': None}]}}
{'key_1': {'key_1_1': None, 'key_1_2': None, 'key_1_3': None, 'key_1_4': [{'key': None, 'value': None}, {'key': None, 'value': None}]}}
True
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/513507.html
上一篇:PHP中的JSON格式
