我想根据出现的次数将一些列表(例如 l2,l3
)与一个大列表(l1
)进行比较,例如:
l1 = ['s1', 's1', 's1', 's2']
l2 = ['s1', 's2']
l3 = ['s1', 's1', 's1']
在我的场景中,l1
更接近 l3
,因为(同时考虑出现的次数),l1 和 l3 之间的差异仅是 [ 's2']
.
通过将列表元素转换为 set
并将它们相交来比较列表元素的常用方法在这里不起作用,因为重复项已被删除。
我想要这样的输出:
compare(l1,l2) = ['s1', 's2']
(“l2 的这两个元素在 l1 中找到”)
比较 (l1,l3) = ['s1', 's1', 's1']
是否有运算符/函数或比列表更好的数据结构?
最佳答案
您可以使用 collections.Counter
类的交集运算符 &
:
from collections import Counter
def compare(l1, l2):
return list((Counter(l1) & Counter(l2)).elements())
因此 compare(l1, l2)
返回:
['s1', 's2']
compare(l1, l3)
返回:
['s1', 's1', 's1']
关于python - 检查一个列表中有多少元素包含在第二个列表中,包括重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57330529/