From a1e2f12df7407e71ee5f505920ed536abb064dcb Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 18 Dec 2023 13:01:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20compare=5Flists=5Fof=5Fdicts=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/tools.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/utils/tools.py b/apps/utils/tools.py index 7033a83d..648bc603 100755 --- a/apps/utils/tools.py +++ b/apps/utils/tools.py @@ -220,9 +220,11 @@ def compare_lists_of_dicts(list1, list2, ignore_order=False): """比较两个列表,这里的列表包含字典(对象)""" if ignore_order: # 转换列表中的字典为元组列表,然后排序进行比较 - sorted_list1 = sorted((tuple(sorted(d.items())) for d in list1)) - sorted_list2 = sorted((tuple(sorted(d.items())) for d in list2)) - return sorted_list1 == sorted_list2 + if list1 and isinstance(list1[0], dict): + sorted_list1 = sorted((tuple(sorted(d.items())) for d in list1)) + sorted_list2 = sorted((tuple(sorted(d.items())) for d in list2)) + return sorted_list1 == sorted_list2 + return list1 == list2 else: # 按顺序比较列表中的字典 return all(compare_dicts(obj1, obj2) for obj1, obj2 in zip(list1, list2)) @@ -230,6 +232,7 @@ def compare_lists_of_dicts(list1, list2, ignore_order=False): def compare_values(val1, val2, ignore_order=False): """通用比较函数,也可以处理字典和列表。""" + print(val1, val2) if isinstance(val1, list) and isinstance(val2, list): # 假设这里我们关心列表中对象的顺序 return compare_lists_of_dicts(val1, val2, ignore_order)