我想确保两个未排序的字典列表相等,即它们具有相同的内容,尽管顺序可能不同。
使用
如果是列表的列表,我只需要对它们进行排序:
我可以通过将所有字典转换为元组来解决这个问题,但这似乎效率低下,不好。
是否有更直接的解决方案?
使用
in
检查是不够的,因为重复的字典是可能存在的。(例如list1 = [dict1, dict1, dict2]
和list2 = [dict1, dict2, dict2]
)如果是列表的列表,我只需要对它们进行排序:
sorted(list_of_lists1) == sorted(list_of_lists2)
但是,对字典进行排序是不稳定的。我可以通过将所有字典转换为元组来解决这个问题,但这似乎效率低下,不好。
是否有更直接的解决方案?
O(n^2)
的运行时间,而这种方法使用(可能是)O(n)
的列表/元组转换,一个O(n log(n))
的排序,然后是一个O(n)
的比较。 - Izaak van Dongen