我有这样的 2 个列表:
list1=['A','B']
list2=['A','C','D']
我想在两个列表之间进行比较,找出条目中缺少的、附加的和没有变化的,我正在像这样访问它:
set1=set(list1)
set2=set(list2)
MissingName=set1.difference(set2)
AdditionalName=set2.difference(set1)
这给了我缺失和额外的条目,我怎样才能找到没有变化,应该是 A?
我有这样的 2 个列表:
list1=['A','B']
list2=['A','C','D']
我想在两个列表之间进行比较,找出条目中缺少的、附加的和没有变化的,我正在像这样访问它:
set1=set(list1)
set2=set(list2)
MissingName=set1.difference(set2)
AdditionalName=set2.difference(set1)
这给了我缺失和额外的条目,我怎样才能找到没有变化,应该是 A?
您可能正在寻找set.intersection。
你可以使用这个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
是,与 using 不同set
,它适用于多重性很重要的情况,例如:
>>> Counter(['A', 'A', 'B']) - Counter(['A', 'B'])
Counter({'A': 1})
此外,您不必使用这种笨重的方法名称 :-)
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
还需要什么吗?