繁体   English   中英

如何检查列表B中所有列表元素在列表A中出现的频率?

[英]How can I check how often all list elements from a list B occur in a list A?

我有一个用词作为列表元素的python列表A和python列表B。 我需要检查列表A中包含列表B中列表元素的频率。是否有python方法,或者该如何高效地实现?

python相交方法仅告诉我列表B中的列表元素出现在列表A中,而不是出现频率。

import collections
counter_A = collections.Counter(A)
for word in B:
    print(word, '->', counter_A[word])

您可以将列表B转换为集合,以便更快地检查元素是否在B中。

然后创建一个字典以计算元素在A中的次数(如果元素也在B的集合中)

如评论collections.Counter中所述。Counter为您完成了“繁重的工作”

python相交方法仅告诉我列表B中的列表元素出现在列表A中,而不是出现频率。

正确,但是您可以基于此原则。 使用字典理解对交点进行迭代:

from collections import Counter

A = [1, 2, 2, 2, 3, 3, 4, 4, 4, 5]
B = [2, 3, 5, 6]

c = Counter(A)

res = {k: c[k] for k in c.keys() & B}
# {2: 3, 3: 2, 5: 1}

字典键的视图,即dict.keys严格来说不是set ,但是它具有类似于set的属性,例如& (intersection):

键视图是类似集合的,因为它们的条目是唯一且可哈希的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM