字符串中最常见的单词

丹尼尔·邦内尔

我是Ruby的新手,正在尝试编写一种将返回字符串中最常见单词的数组的方法。如果有一个单词的计数很高,则应返回该单词。如果有两个单词用于高计数,则应将两个单词都以数组形式返回。

问题是,当我通过第二个字符串时,代码仅将“单词”计数两次,而不是三次。传递第三个字符串时,它返回的计数为2的“ it”,这没有意义,因为“ it”的计数应为1。

def most_common(string)
  counts = {}
  words = string.downcase.tr(",.?!",'').split(' ')

  words.uniq.each do |word|
    counts[word] = 0
  end

  words.each do |word|
    counts[word] = string.scan(word).count
  end

  max_quantity = counts.values.max
  max_words = counts.select { |k, v| v == max_quantity }.keys
  puts max_words
end

most_common('a short list of words with some words') #['words']
most_common('Words in a short, short words, lists of words!') #['words']
most_common('a short list of words with some short words in it') #['words', 'short']
尼克·维斯

您计算单词实例数的方法就是您的问题。it在中with,因此需要重复计算。

[1] pry(main)> 'with some words in it'.scan('it')
=> ["it", "it"]

不过,可以更轻松地完成操作,您可以使用each_with_object调用按值实例的数量将数组的内容分组,如下所示:

counts = words.each_with_object(Hash.new(0)) { |e, h| h[e] += 1 }

这遍历数组中的每个条目,并为哈希中每个单词的条目的值加1。

因此,以下内容将为您工作:

def most_common(string)
  words = string.downcase.tr(",.?!",'').split(' ')
  counts = words.each_with_object(Hash.new(0)) { |e, h| h[e] += 1 }
  max_quantity = counts.values.max
  counts.select { |k, v| v == max_quantity }.keys
end

p most_common('a short list of words with some words') #['words']
p most_common('Words in a short, short words, lists of words!') #['words']
p most_common('a short list of words with some short words in it') #['words', 'short']

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找字符串中最常见的单词

来自分类Dev

无空格字符串中最常见的单词

来自分类Dev

字符串中最常见的字符

来自分类Dev

返回字符串中最常见的字符

来自分类Dev

字符串中最常见的字母

来自分类Dev

如何找到字符串中最常见的部分?

来自分类Dev

飞镖-查找字符串中最常见的字符

来自分类Dev

JavaScript | 返回字符串中最常见的多个字符

来自分类Dev

获取数组中最常见(频繁)的字符串条目

来自分类Dev

Objective-C:如何找到数组中最常见的字符串?

来自分类Dev

计算文件中最常见的未知字符串出现次数

来自分类Dev

Objective-C:如何找到数组中最常见的字符串?

来自分类Dev

带有计数器的列表中最常见的字符串

来自分类Dev

txt文件中最常见的单词

来自分类Dev

在字符串javascript中查找最常见的字符

来自分类Dev

范围中最常见的单词,忽略空格

来自分类Dev

在Python 3中查找网站中最常见的单词

来自分类Dev

Java ArrayList中最常见的n个单词

来自分类Dev

在Python 3中查找网站中最常见的单词

来自分类Dev

JS:编写一个遍历字符串列表并返回列表中最常见的前10个字符串的函数

来自分类Dev

在给定的字符串中找到最常见的子字符串?重叠是允许的

来自分类Dev

从字符串数组中查找最常见的子字符串

来自分类Dev

在MYSQL中,如何使用SELECT INSTINCT过滤掉重复用户后获得列中最常见的字符串?

来自分类Dev

在字符串列表中找到最常见的子字符串?

来自分类Dev

从字符串中删除常见单词?

来自分类Dev

如何在字符串中查找最常见的字符

来自分类Dev

最常见的字符-用户提交的没有字典或计数器的字符串

来自分类Dev

在ArrayList中查找最常见的字符串-当前返回null

来自分类Dev

Java:如何在ArrayList中找到前10名最常见的字符串+频率?

Related 相关文章

  1. 1

    查找字符串中最常见的单词

  2. 2

    无空格字符串中最常见的单词

  3. 3

    字符串中最常见的字符

  4. 4

    返回字符串中最常见的字符

  5. 5

    字符串中最常见的字母

  6. 6

    如何找到字符串中最常见的部分?

  7. 7

    飞镖-查找字符串中最常见的字符

  8. 8

    JavaScript | 返回字符串中最常见的多个字符

  9. 9

    获取数组中最常见(频繁)的字符串条目

  10. 10

    Objective-C:如何找到数组中最常见的字符串?

  11. 11

    计算文件中最常见的未知字符串出现次数

  12. 12

    Objective-C:如何找到数组中最常见的字符串?

  13. 13

    带有计数器的列表中最常见的字符串

  14. 14

    txt文件中最常见的单词

  15. 15

    在字符串javascript中查找最常见的字符

  16. 16

    范围中最常见的单词,忽略空格

  17. 17

    在Python 3中查找网站中最常见的单词

  18. 18

    Java ArrayList中最常见的n个单词

  19. 19

    在Python 3中查找网站中最常见的单词

  20. 20

    JS:编写一个遍历字符串列表并返回列表中最常见的前10个字符串的函数

  21. 21

    在给定的字符串中找到最常见的子字符串?重叠是允许的

  22. 22

    从字符串数组中查找最常见的子字符串

  23. 23

    在MYSQL中,如何使用SELECT INSTINCT过滤掉重复用户后获得列中最常见的字符串?

  24. 24

    在字符串列表中找到最常见的子字符串?

  25. 25

    从字符串中删除常见单词?

  26. 26

    如何在字符串中查找最常见的字符

  27. 27

    最常见的字符-用户提交的没有字典或计数器的字符串

  28. 28

    在ArrayList中查找最常见的字符串-当前返回null

  29. 29

    Java:如何在ArrayList中找到前10名最常见的字符串+频率?

热门标签

归档