字典:统计字母出现次数

从键盘输入一个字符串,字符串中只包含若干字母,统计每个字母出现的次数,按出现频率从高到低输出这些字母,全部输出小写形式

img

img

按照要求实现代码如下:

words_count = {}
words = input()

for w in words:
    w = w.lower()
    words_count[w] = words_count.get(w,0)+1

words_count = sorted(words_count.items(),key=lambda  x:x[1],reverse=True)
result = [item[0] for item in words_count]
print(''.join(result))

运行结果:

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7594272
  • 这篇博客你也可以参考下:统计字符串中数字、字母、其他字符的出现次数
  • 除此之外, 这篇博客: 分类器的准确率、召回率以及综合评价指标中的 精确率和召回率是相互影响的,我们希望两者同时都非常高,实际中,往往精确率高,召回率就低,或者,召回率低,精确率就高。具体问题具体分析,如果想要在二者中找到一个平衡点,可以借助一个指标,F1分数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 介绍ROC和AUC之前,再介绍两个指标,它们是让ROC,AUC可以无视样本不平衡的关键,分别是:灵敏度,1-特异度,也叫做 真正率(TPR)和假正率(FPR)
    灵敏度(Sensitivity) = TP/(TP+FN)

    特异度(Specificity) = TN/(FP+TN)

    可以看出灵敏度和召回率一模一样,假正率(FPR) = 1- 特异度 = FP/(FP+TN)
    我们发现TPR和FPR分别是基于实际表现1和0出发的,也就是说它们分别在实际的正样本和负样本中来观察相关概率问题。总样本中,90%是正样本,10%是负样本。我们知道用准确率是有水分的,但是用TPR和FPR不一样。这里,TPR只关注90%正样本中有多少是被真正覆盖的,而与那10%毫无关系,同理,FPR只关注10%负样本中有多少是被错误覆盖的,也与那90%毫无关系,所以可以看出:如果我们从实际表现的各个结果角度出发,就可以避免样本不平衡的问题了,这也是为什么选用TPR和FPR作为ROC/AUC的指标的原因。

  • 您还可以看一下 MDCC2016老师的移动直播技术专场:百万弹幕下的直播礼物系统课程中的 百万弹幕下的直播礼物系统(上)小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:
    def count_letters(s):
        """
        统计一个字符串中每个字母出现的次数,并按照出现频率从高到低输出这些字母的小写形式
        """
        # 定义字典存储每个字母出现次数
        letter_dict = {}
        # 遍历字符串,统计每个字母出现次数
        for letter in s:
            if letter.isalpha():  # 判断是否为字母
                if letter.lower() not in letter_dict:
                    letter_dict[letter.lower()] = 1
                else:
                    letter_dict[letter.lower()] += 1
    
        # 按照出现次数从高到低排序
        result = sorted(letter_dict.items(), key=lambda x: x[1], reverse=True)
    
        # 输出结果
        for item in result:
            print(item[0], item[1])