Python 如何返回两个独立集合中匹配元素的和

Python 如何返回两个独立集合中匹配元素的和,python,Python,我有两个带字符串的集合,我希望能够比较set1元素和set2元素,并输出匹配元素的总和。如果我可以避免这样的循环,那也将是首选。这个想法是这样的: set1 = ['some','words','are','here'] set2 = ['some','words','are','over','here','too'] 我正在寻找的函数将在这里输出一个4,返回set2中包含的set1中所有元素的True。R中的类似函数是 sum(set1 %in% set2) 但是我在Py

我有两个带字符串的集合,我希望能够比较set1元素和set2元素,并输出匹配元素的总和。如果我可以避免这样的循环,那也将是首选。这个想法是这样的:

   set1 = ['some','words','are','here']
   set2 = ['some','words','are','over','here','too']
我正在寻找的函数将在这里输出一个4,返回set2中包含的set1中所有元素的True。R中的类似函数是

   sum(set1 %in% set2)
但是我在Python中找不到一个等价物。如果你们能帮忙,请告诉我。干杯

首先,您没有
集合
对象,您有
列表
对象:

>>> set1 = ['some','words','are','here']
>>> set2 = ['some','words','are','over','here','too']
>>> type(set1), type(set2)
(<class 'list'>, <class 'list'>)
>>>
或者,您可以使用更面向对象的样式:

>>> set1.intersection(set2)
{'are', 'here', 'words', 'some'}
>>> len(set1.intersection(set2))
4
我个人更喜欢运营商:

>>> set1 & set2 # intersection
{'are', 'here', 'words', 'some'}
>>> set1 | set2 # union
{'some', 'here', 'words', 'too', 'over', 'are'}
>>> set1 - set2 # difference
set()
>>> set2 - set1 # difference
{'too', 'over'}
>>> set2 ^ set1 # symmetric difference
{'over', 'too'}
如果您有
列表
对象,只需转换为
集合

>>> l1 = ['some','words','are','here']
>>> l2 = ['some','words','are','over','here','too']
>>> set(l1).intersection(l2)
{'some', 'are', 'words', 'here'}
>>> len(set(l1).intersection(l2))
4

print(len(set(set1).intersection(set(set2)))
你在找这个吗?这里有列表,没有集合。这些列表中的任何一个是否包含重复的字符串?是!非常感谢你。我费了好大劲才找到的anything@PM2Ring是的,Python的术语对我来说很难从R过来,对此我很抱歉。是的,可以有重复的,我想把它们计入最后的总数
>>> set1 & set2 # intersection
{'are', 'here', 'words', 'some'}
>>> set1 | set2 # union
{'some', 'here', 'words', 'too', 'over', 'are'}
>>> set1 - set2 # difference
set()
>>> set2 - set1 # difference
{'too', 'over'}
>>> set2 ^ set1 # symmetric difference
{'over', 'too'}
>>> l1 = ['some','words','are','here']
>>> l2 = ['some','words','are','over','here','too']
>>> set(l1).intersection(l2)
{'some', 'are', 'words', 'here'}
>>> len(set(l1).intersection(l2))
4