下面是代码,为了比较两个列表,我使用了集合,因为我可以接受元素位置不同。脚本检查 list2 是否包含 list1 中的所有元素。这工作正常。现在我需要帮助,比较 list1 和 list2 时缺少什么或有什么不同。
list1 = ['ab','cd','600','4','a=7777','b=7777']
list2 = ['ab', 'cd','600', '4','a=7777','b=7777']
if collections.Counter(list1) != collections.Counter(list):
print "something not matching or missing list1 with list2"
print "help me what is missing or what different values between list1 and list2"
预期输出:
if
list1 = ['ab','cd','600','4','a=7777','b=7777']
list2 = ['ab', 'cd','600', '4','a=7777','b=7777']
Expected output:
Do Not print anything.
elif
list1 = ['ab','cd','600','4','a=7777','b=7777']
list2 = ['ab', 'cd','600', '4','a=7777','b=77']
Expected output:
print "MisMatch"
print "In list2 b=7777 should contain"
elif
list1 = ['ab','cd','600','4','a=7777','b=7777']
list2 = ['ab', 'cd','600','a=7777','b=7777']
Expected output:
print "MisMatch"
print "In list2 4 is missing"
请您参考如下方法:
您可能正在寻找一个集合:
>>> list1 = ['ab','cd','600','4','a=7777','b=7777']
>>> list2 = ['ab', 'cd','600', '4','a=7777','b=77']
>>> set(list1) - set(list2))
{'b=7777'}
请注意 set是一个:
Unordered collection of unique elements
因此它不会告诉您列表中缺少多少元素,而只会告诉您缺少哪些元素。
例如:
>>> list1 = ['ab','cd','600','4','a=7777','b=7777', 'b=7777']
>>> list2 = ['ab', 'cd','600', '4','a=7777','b=77']
>>> set(list1) - set(list2)
{'b=7777'}
将仍然只输出一个元素,尽管在您的第一个列表中有 2 个元素。
如果您想跟踪这些重复项,请查看 @John La Rooy's answer .
