假设我有以下两个列表,其中仅包含字符串对象。
list1 = ['UC1', 'UC1,UC2', 'UC3' ]
list2 = ['UC1', 'UC2', 'UC3']
我想检查UC1
,UC2
,UC2
在list1
中出现多少时间
预期结果应分别为2,1和1。
实际上,我分别在list1
和list2
中有数百万个对象
有人可以帮助我在python中尽可能高效地做到这一点吗?
谢谢
答案 0 :(得分:1)
n = [len([j for j in list1 if i in j]) for i in list2]
输出
[2,1,1]
答案 1 :(得分:0)
这很复杂。
对于列表中任何元素的计数,我们必须遍历所有列表。因此,时间复杂度等于O(n)。对于此步骤,我们无能为力。我推荐sklearn.feature_extract.text.TFIDFTransform
。
为了知道所有element
的计数,我们应该存储计数并快速获取计数。我推荐字典或scipy.sparse.csr_matrix
。