Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >列表中的单词计数

列表中的单词计数
EN

Stack Overflow用户
提问于 2019-09-15 08:04:49
回答 1查看 57关注 0票数 0

我有一个项目,其目标是在字符串中计数单词。解决这个问题的最明显的方法之一是将字符串拆分成列表,然后让程序运行,这样它就可以查看任何列表项是否相同;最后,将单词作为字典的键,将重复的次数作为字典的键。我这样做了,但是出现了“列表索引必须是整数或片,而不是str”的错误消息。解决这个问题的方法是什么(下面的代码)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
words = content_string.lower()
punctuation = ["'", '"', ',', '.', '?', '!', ':', ';', '()','-']
words = "".join(i if i not in punctuation else "" for i in words)
words = words.split()

i = 0
counts = dict()

for i in words:
if words[i] in counts:
    counts[words[i]] += 1
else:
    counts[words[i]] =1

sorted_counts = sorted(counts.items(), key=operator.itemgetter(1), reverse=True)
for i in len(range(9)):
    print(count[i])
EN

回答 1

Stack Overflow用户

发布于 2019-09-15 08:31:49

使用collections.Counter (8.3收款)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import collections
from pprint import pprint

content_string = 'I am having a project of which the goal is to count words in a string (unigrams). One of the most obvious ways to approach this is by splitting the string up to lists and then have the program run so it can see if any list items are the same; finally, put the word as the key of a dictionary, and the times of repetition as the key of the dictionary. I did this, but the error message appears of "list indices must be integers or slices, not str". What are some ways to fix this problem (code below).'

words = content_string.lower()
punctuation = ["'", '"', ',', '.', '?', '!', ':', ';', '(',')','-']
words = "".join(i if i not in punctuation else "" for i in words)
words = words.split()

word_count = collections.Counter()
for word in words:
    word_count[word] += 1

pprint(word_count.most_common())

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[('the', 11),
 ('of', 6),
 ('to', 4),
 ('a', 3),
 ('this', 3),
 ('i', 2),
 ('is', 2),
 ('string', 2),
 ('ways', 2),
 ('and', 2),
 ('list', 2),
 ('are', 2),
 ('as', 2),
 ('key', 2),
 ('dictionary', 2),
 ('am', 1),
 ('having', 1),
 ('project', 1),
 ('which', 1),
 ('goal', 1),
 ('count', 1),
 ('words', 1),
 ('in', 1),
 ('unigrams', 1),
 ('one', 1),
 ('most', 1),
 ('obvious', 1),
 ('approach', 1),
 ('by', 1),
 ('splitting', 1),
 ('up', 1),
 ('lists', 1),
 ('then', 1),
 ('have', 1),
 ('program', 1),
 ('run', 1),
 ('so', 1),
 ('it', 1),
 ('can', 1),
 ('see', 1),
 ('if', 1),
 ('any', 1),
 ('items', 1),
 ('same', 1),
 ('finally', 1),
 ('put', 1),
 ('word', 1),
 ('times', 1),
 ('repetition', 1),
 ('did', 1),
 ('but', 1),
 ('error', 1),
 ('message', 1),
 ('appears', 1),
 ('indices', 1),
 ('must', 1),
 ('be', 1),
 ('integers', 1),
 ('or', 1),
 ('slices', 1),
 ('not', 1),
 ('str', 1),
 ('what', 1),
 ('some', 1),
 ('fix', 1),
 ('problem', 1),
 ('code', 1),
 ('below', 1)]

PS。for i in words: I实际上是一个单词,而不是索引。如果您想要一个索引和单词,那么您可以使用for i, word in enumerate(words):,但是,正如您看到的那样,使用计数器以更短的方式解决问题。

无论如何,不使用计数器,您可以解决以下问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pprint import pprint

content_string = 'I am having a project of which the goal is to count words in a string (unigrams). One of the most obvious ways to approach this is by splitting the string up to lists and then have the program run so it can see if any list items are the same; finally, put the word as the key of a dictionary, and the times of repetition as the key of the dictionary. I did this, but the error message appears of "list indices must be integers or slices, not str". What are some ways to fix this problem (code below).'

words = content_string.lower()
punctuation = ["'", '"', ',', '.', '?', '!', ':', ';', '(',')','-']
words = "".join(i if i not in punctuation else "" for i in words)
words = words.split()

word_count = {}

for word in words:
    try:
        word_count[word] += 1
    except KeyError:
        word_count[word] = 1

word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
pprint(word_count)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57945850

复制
相关文章
MapReduce WordCount 单词计数
实验环境 系统版本:Centos 7.5 Hadoop版本:Apache Hadoop 2.7.3 1. 简述 Hadoop将输入数据切分成若干个输入分片(input split),并将每个split交给一个MapTask处理; Map Task不断的从对应的split中解析出一个个key/value,并调用map()函数处理,处理完之后根据Reduce Task个数将结果分成若干个分片(partition)写到本地磁盘; 同时,每个Reduce Task从每个Map Task上读取属于自己的那个part
yiyun
2022/04/01
6450
MapReduce WordCount 单词计数
LeetCode 916. 单词子集(计数)
现在,如果 b 中的每个字母都出现在 a 中,包括重复出现的字母,那么称单词 b 是单词 a 的子集。 例如,“wrr” 是 “warrior” 的子集,但不是 “world” 的子集。
Michael阿明
2020/07/13
4360
C语言 文件单词的检索与计数
iMaster,iMatch;是扫描的变量,在未完成主串与匹配串的扫描时,当出现相同的字符时两者都会自加,一旦发现不同的立马回到主串的起始位置的下一个的位置,匹配串的扫描变量立马清零。扫描完了,返回主串存在匹配串的起始位置。
立羽
2023/08/24
2550
天池 在线编程 两句话中的不常见单词(哈希计数)
给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)
Michael阿明
2021/09/06
3050
【译】CSS列表,标记,计数器
在CSS中,列表具有特定的属性,为我们提供了标准的列表样式。例如,无序列表的列表项符号是圆点,有序列表的是编号。我之所以会去详细研究列表,主要来源于为MDN整理::marker伪元素的文档。这个伪元素在已经发布的Firefox 68版本中所支持,通过使用::marker伪元素,我们可以用列表做一些有趣的事情。
腾讯IVWEB团队
2020/06/28
1.2K0
每周学点大数据 | No.71 单词出现行计数
No.71 单词出现行计数 Mr. 王 :我们可以试试用 Python 终端来实现一个最简单的功能——单词出现行计数。 首先创建一个文件,在里面写一段话。 小可 :我就在 Spark 文件夹里写一个名
灯塔大数据
2018/04/03
7070
每周学点大数据 | No.71 单词出现行计数
一份程序猿单词列表(updating)
以下单词是个人平时阅读英文文档时遇到的一些“生”单词,该文档将持续更新,可以持续关注https://github.com/hylinux1024/word-list-for-programmer
阳仔
2019/07/30
3530
Vue案例入门 列表展示 计数器
https://github.com/courageSteak/vue-framework
有勇气的牛排
2023/06/25
1380
翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。 由于本题需要翻转句子,我们先颠倒句子中的所有字符。这时,不但翻转了句子中单词的顺序,而且单词内字符也被翻转了。我们再颠倒每个单词内的字符。由于单词内的字符被翻转两次,因此顺序仍然和输入时的顺序保持一致。 还是以上面的输入为例子。翻转“I am a student.”中所有字符得到“.tn
猿人谷
2018/01/17
1.7K0
CSS中的计数器
     <p>Place the flour in a large bowl, make a well in the centre and pour in the milk and eggs. Give the liquid mixture a quick whisk before incorporating the flour. Continue to whisk until you have a smooth batter.</p>
大江小浪
2018/07/25
1.3K0
Python中的计数 - Counter类
在很多场景中经常会用到统计计数的需求,比如在实现 kNN 算法时统计 k 个标签值的个数,进而找出标签个数最多的标签值作为最终 kNN 算法的预测结果。Python内建的 collections 集合模块中的 Counter 类能够简洁、高效的实现统计计数。
触摸壹缕阳光
2020/07/22
2.2K0
DRF框架中的英文单词
1. prefix/'prifɪks/前缀,我们在路由配置的时候经常看见这个单词。在flask中,我们可以在设置url的时候为了区别视图,在类似功能的url全部加一个前缀。
小闫同学啊
2019/07/18
1.7K0
Django框架中的英文单词
本文采用的音标均为美式音标,有部分通用或者其他国家的语言,没有进行标注或者采用了通用音标。所有的意思均为牛津词典中的原意。因为上次文章直接使用的是学习python时,我们计算机的意思,怕把大家带跑偏。特意选取了正规的翻译,然后后面对计算机中的意思进行了注释,并且将对应的知识点进行了回忆,希望对大家有所帮助。本文均为手工敲,所以可能会有错别字,希望大家海涵。祝大家学习愉快。
小闫同学啊
2019/07/18
1.5K0
Django框架中的英文单词
反转字符串中的单词
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
狼啸风云
2023/10/07
2750
Python中的列表
列表 是一种用于保存一系列有序项目的集合,也就是说,你可以利用列表保存一串项目的序 列。想象起来也不难,你可以想象你有一张购物清单,上面列出了需要购买的商品,除开在 购物清单上你可能为每件物品都单独列一行,在 Python 中你需要在它们之间多加上一个逗 号。
benym
2022/07/14
4.9K0
python中的列表
列表是由一系列特定顺序排列的元素组成。你可以创建包含字母表中所有字母,数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或names)是个不错的主意。
狼啸风云
2019/01/28
5.5K0
颠倒字符串中的单词
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
PHP开发工程师
2022/04/28
1.5K0
颠倒字符串中的单词
Python中的列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 1.列表 数组:存储同一种数据类型的集合 scores = [12,23,45] 列表(打了激素的数组):可以存储任意数据类型
py3study
2020/01/10
5.2K0
统计文章中单词个数
#include<stdio.h> #include<assert.h> int fun(const char* str) { assert(str != NULL); const char* p = str; int count = 0;//计数器 while(*p != '\0') { if(*p != ' ' && (*(p+1) == ' ' || *(p+1) == '\0')) { count
lexingsen
2022/02/24
6930
点击加载更多

相似问题

bash中的单词计数列表

10

如何从列表中出现的单词列表中返回单词计数?

31

分组列表中单词频率的计数

20

单词的计数频率.链接列表

10

从python列表中获取单词计数

47
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文