首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查列表B中的所有列表元素在列表A中出现的频率?

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

Stack Overflow用户
提问于 2019-01-28 22:38:41
回答 3查看 52关注 0票数 0

我有一个python列表A和一个以单词作为列表元素的python列表B。我需要检查列表B中的列表元素被包含在列表A中的频率。有python方法吗?或者我如何高效地实现这个方法?

python intersection方法只告诉我列表B中的一个列表元素出现在列表A中,而不是告诉我它出现的频率。

EN

回答 3

Stack Overflow用户

发布于 2019-01-28 22:51:05

代码语言:javascript
复制
import collections
counter_A = collections.Counter(A)
for word in B:
    print(word, '->', counter_A[word])
票数 2
EN

Stack Overflow用户

发布于 2019-01-28 22:52:48

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

如果该元素也在B的集合中,则创建一个字典来计算该元素在A中的次数

正如评论中所提到的,collections.Counter为您做了“繁重的工作”

票数 0
EN

Stack Overflow用户

发布于 2019-01-28 23:22:43

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

正确,但您可以在此原则的基础上构建。使用字典理解遍历交叉点:

代码语言:javascript
复制
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 )这样的交集:

键视图是类似于集合的,因为它们的条目是唯一的和可散列的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54404263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档