我有这样的2个列表:
list1=['A','B']
list2=['A','C','D']
我想在两个列表中进行比较,找出缺少的,额外的和条目没有变化,我这样访问它:
set1=set(list1)
set2=set(list2)
MissingName=set1.difference(set2)
AdditionalName=set2.difference(set1)
这给了我遗漏和其他条目,我怎样才能找到无变化,哪个应该是A ??
答案 0 :(得分:11)
您可能正在寻找set.intersection。
答案 1 :(得分:3)
您可以使用Counter
类:
>>> list1=['A','B']
>>> list2=['A','C','D']
>>> from collections import Counter
>>> c1=Counter(list1)
>>> c2=Counter(list2)
>>> c1-c2 # missing items
Counter({'B': 1})
>>> c2-c1 # additional items
Counter({'C': 1, 'D': 1})
>>> c2&c1 # intersection
Counter({'A': 1})
使用Counter
类的好处是,与使用set
不同,它适用于多重性很重要的情况,例如:
>>> Counter(['A', 'A', 'B']) - Counter(['A', 'B'])
Counter({'A': 1})
此外,您不必使用这种笨重的方法名称: - )
答案 2 :(得分:0)
additional_entries_in_first = set1 - set2
additional_entries_in_second = set2 - set1
are_lists_equal = list1 == list2
are_element_sets_equal = set1 == set2
all_items = set1 | set2
shared_items = set1 & set2
还需要什么?