20、标题:字符统计及重排
【字符统计及重排】给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数,并按照字母出现次数从大到小的顺序输出各个字母及
其出现次数。如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前。
输入描述:
输入一行,为一个仅包含字母的字符串。
输出描述:
按照字母出现次数从大到小的顺序输出各个字母和字母次数,用英文分号分隔,注意末尾的分号;字母和次数间用英文冒号分隔。
示例1:
输入
xyxyXX
输出
x:2;y:2;X:2;

def zi_fu_tong_ji(s):
    d1 = {}  # 统计小写字符次数
    d2 = {}  # 统计大写字符次数
    for c in s:
        if c.islower():
            d1[c] = d1.get(c, 0) + 1
        else:
            d2[c] = d2.get(c, 0) + 1
    ss = ''
    for k, v in sorted(d1.items(), key=lambda x: [x[1], x[0]]):
        ss += '%s:%s;' % (k, v)
    for k, v in sorted(d2.items(), key=lambda x: [x[1], x[0]]):
        ss += '%s:%s;' % (k, v)
    return ss


print(zi_fu_tong_ji("xyxyXX"))