我有一个Python列表A和一个以单词作为列表元素的python列表B。我需要检查列表A中包含列表B中列表元素的频率。是否有python方法,或者该如何高效地实现?
python交集方法仅告诉我列表B中的列表元素出现在列表A中,而不是出现频率。
答案 0 :(得分:2)
import collections
counter_A = collections.Counter(A)
for word in B:
print(word, '->', counter_A[word])
答案 1 :(得分:0)
您可以将列表B转换为集合,以便更快地检查元素是否在B中。
然后创建一个字典以计算元素在A中的次数(如果元素也在B的集合中)
如评论collections.Counter
中所述,为您完成了“繁重的任务”
答案 2 :(得分:0)
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
-like properties,例如&
(交集):
键视图是类似集合的,因为它们的条目是唯一且可哈希的。