【发布时间】:2017-10-06 13:13:20
【问题描述】:
如何比较两个无序列表和其中的无序列表?
假设这两个列表中的列表的顺序不一定相同。还假设列表列表中给定列表中的项目的顺序不一定是相同的。示例如下:
dummy_list_A = [['A'], ['B'], ['C', 'D']]
dummy_list_B = [['B'], ['A'], ['D', 'C']]
我已经在 Stack Overflow 上查看了诸如 Test if two lists of lists are equal 之类的问题的答案,但没有一个有效。您可以在下面看到,比较列表的最常见答案不适用于我的场景。
print sorted(dummy_list_A) == sorted(dummy_list_B)
False
print set(map(tuple,dummy_list_A)) == set(map(tuple,dummy_list_B))
False
print ((len(dummy_list_A) == len(dummy_list_B)) and (all(i in dummy_list_B for i in dummy_list_A)))
False
【问题讨论】:
-
应该
[['A'], ['C'], ['B', 'D']]与其中任何一个比较吗? -
元素是否可散列?构建(冻结)集合可能比排序更有效。
-
@chepner 这可能不起作用,因为它不会考虑重复的元素。
-
@MosesKoledoye 不,[['A'], ['C'], ['B', 'D']] 不应与其中任何一个比较。
标签: python list comparison