题解 | #字符统计#
字符统计
http://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
我感觉写的好复杂啊,这题让我对reverse和sort有更深的理解
while True: try: # 获取输入字符串 in_str = input() if len(in_str)<1 or len(in_str)>1000: break # 定义一个字典存储字母和数字的数量,要定义一个大的初始列表,所以查了一个python的字典的setdefault用法 count_dic = {} for i in in_str: count_dic[str(i)] = count_dic.setdefault(str(i), 0) count_dic[str(i)] = count_dic[str(i)] + 1 #print(count_dic) # 获得字典值 values_list = list(set(count_dic.values())) # 利用集合去重 # 对字典值进行排序 values_list.sort(reverse=True) # reverse是参数,总把reverse当排序用 #print(values_list) #[3, 2] #print('#'*20) # 对字典值进行循环,查出对应的顺序 out_str = '' out_list = [] for val in values_list: #print(val) inner_str = '' # 内部循环的一个字符串 for key in count_dic: # print(key) if count_dic[key] == val: inner_str = inner_str + key #print(inner_str) out_list = [ ord(i) for i in inner_str] # 利用ord排序 #print(out_list) out_list.sort() #print(out_list) # 转换成字符串列表 out_list = [chr(i) for i in out_list] #print(out_list) out_str = out_str + ''.join(out_list) # 一次循环结束以后,out_list输出符合规定的小字符串 print(out_str) except: break