【问题标题】:Finding the most frequent character in a dictionary [duplicate]在字典中查找最常见的字符[重复]
【发布时间】:2019-04-17 18:03:06
【问题描述】:

我有一个字符串,并且我已经从该字符串创建了一个字典,现在我需要根据该字典找到最常用的字母并将该字母分配给变量 best_char。也是变量最差的字符最不频繁的字母。

sally = "sally sells sea shells by the sea shore"
characters = {}
for i in sally:
    characters[i]=characters.get(i,0)+1

【问题讨论】:

标签: python


【解决方案1】:

字典做得很好。

> characters
# {'s': 8, ' ': 7, 'l': 6, 'e': 6, 'a': 3, 'h': 3, 'y': 2, 'b': 1, 't': 1, 'o': 1, 'r': 1}

按值对那些字典键(元组)进行排序。

  • characters.items() 是字典中的项目(键,值) 元组。

  • sorted(dictionary.items(), key=function) 将对这些元组进行排序,但我们需要一个 key 函数来告诉 sorted如何对它们进行排序。

  • 我们定义了一个 lambda 函数来按item[1] 排序。 lambda 函数接受一个 (key, value) 元组并返回 (key, value)[1],即值。这样sorted() 就会知道按元组中的第二项排序。

这是您的排序元组:

> sorted(characters.items(), key=lambda x: x[1])
# [('b', 1), ('t', 1), ('o', 1), ('r', 1), ('y', 2), ('a', 3), ('h', 3), ('l', 6), ('e', 6), (' ', 7), ('s', 8)]

选择最后一个元组[-1]。选择密钥。[0]

> best_char = sorted(characters.items(), key=lambda x: x[1])[-1][0]
# s
> worst_char = sorted(characters.items(), key=lambda x: x[1])[0][0]
# b or t or o or r. There are four characters that appear only once.

【讨论】:

  • 这里我会给你问题:创建字典字符,显示字符串 sally 中的每个字符及其频率。然后,根据字典找到最常见的字母。将此字母分配给变量 best_char。
  • @LefterisTheodorou 计数器位是您已经完成的工作的捷径。之后,您将按照我的描述对 dictionary.items() 进行排序。最不频繁的将是排序项目中的第一项,最频繁的将是最后一项。
  • 对不起,但它不适合我,我很新,我不知道如何把它全部加起来。
  • 您只需要我回答中的最后一行代码。将该行放在您的代码下,一切都会正常进行。然后你可以重新阅读并玩一下看看它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 2014-05-24
  • 2017-03-30
  • 2012-12-08
  • 2014-11-04
  • 2014-12-14
  • 2011-02-03
  • 2020-02-23
  • 1970-01-01
相关资源
最近更新 更多