martinnnu
Tudouxiong001
采纳率33.3%
2016-12-09 03:26

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

已采纳

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • shihengzhen101 AlbertS 5年前
    #我是一个新手,第一次看这么复杂的代码,不过仔细分析一下可以理解
    #源代码
    
    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)#便是把排好的序列使用盗号分隔输出
    
    点赞 1 评论 复制链接分享

相关推荐