首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列表或数组中计数感兴趣的单词

在列表或数组中计数感兴趣的单词
EN

Stack Overflow用户
提问于 2022-08-23 00:05:02
回答 4查看 42关注 0票数 0

我有以下情况:

代码语言:javascript
复制
import pandas as pd
import numpy as np

stuff = ['Elon Musk', 'elon musk', 'elon Musk', 'Elon Musk is awesome', "Who doesn't love Elon Musk"]

我想数一数埃隆·马斯克这个名字出现在“物品”列表的每一个方面的次数。大写或小写都算在内。预期的结果是,它将返回一个值计数5 (因为Elon,大小写不敏感,出现在列表的每个方面。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-08-23 00:07:44

像这样的东西应该能起作用

代码语言:javascript
复制
l = ['Elon Musk', 'elon musk', 'elon Musk', 'Elon Musk is awesome', "Who doesn't love Elon Musk"]

sum(1 for x in l if 'elon musk' in x.lower())

输出

代码语言:javascript
复制
5

编辑:

如果这个词被重复,你可以使用regex。

代码语言:javascript
复制
import re
l = ['Elon Musk', 'elon musk', 'elon Musk', 'Elon Musk is awesome', "Who doesn't love Elon Musk loving Elon Musk"]

sum(len(re.findall('elon musk', x.lower())) for x in l)

输出

代码语言:javascript
复制
6
票数 2
EN

Stack Overflow用户

发布于 2022-08-23 00:08:15

要搜索列表,可以执行以下操作:

代码语言:javascript
复制
results = [value for value in values if search.lower() in value.lower()]

要将此与您的示例相匹配,您可以这样做

代码语言:javascript
复制
results = [result for result in stuff if 'elon musk' in result.lower()]

然后可以使用len(results)获取结果的数量。

票数 1
EN

Stack Overflow用户

发布于 2022-08-23 00:12:21

实际上,最快的方法之一是使用列表理解(而不是迭代器):

代码语言:javascript
复制
>>> len([x for x in stuff if 'elon musk' in x.lower()])
5

# or
>>> sum(['elon musk' in x.lower() for x in stuff])
5

当您可以使用列表理解本身时,不使用 sum('elon musk' in x.lower() for x in stuff)或任何sum(iterator)。它也能工作,但实际上要慢一些(在这么小的列表中有一点点)。

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

https://stackoverflow.com/questions/73452101

复制
相关文章

相似问题

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