Tudouxiong001 2016-12-09 03:26 采纳率: 33.3%
浏览 1018
已采纳

Python这几句代码求大神解释。

代码的功能:对输入的字符串按字母降频排序输出,同频次的字母按照字母表顺序排序。但是代码我看不懂,求大神帮我解释一下。感激不尽!!图片说明

  • 写回答

1条回答 默认 最新

  • AlbertS 博客专家认证 2016-12-09 03:54
    关注
    #我是一个新手,第一次看这么复杂的代码,不过仔细分析一下可以理解
    #源代码
    
    s = input('please input string:')
    freq = {}
    for c in s:
        freq[c] = freq.setdefault(c, 0) + 1
    print(','.join(sorted(freq, key=lambda x: (-freq[x], x))))
    
    
    #等价于
    
    s = input('please input string:')           #提示输入一个字符串
    freq = {}                                   #定义一个字典结构
    for c in s:                                 #遍历输入的字符串
        freq[c] = freq.setdefault(c, 0) + 1     #在字典结构中查找,若之前没有设置为0 + 1,若已经存在则直接加1
    
    sorted(freq, key=lambda x: (-freq[x], x))   #这里是排序,key的值是排序规则,
    #如果是`freq[x]`默认是按照频度升序,所以使用`-freq[x]`表示使用频度负数排序,即变成了降序,后边还有一个x表示频度相同按字典排序
    print(','.join(freq)#便是把排好的序列使用盗号分隔输出
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用