题解 | #名字的漂亮度#
名字的漂亮度
http://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
主要是用字典做字母数量的统计,利用sorted对字母数量进行排序。
def pretty_score(s):
s_dict = {}#用一个字典来统计字母出现的次数,key为字母,value为对应出现的次数
for i in s:
if i not in s_dict:#如果字典里还没有当前这个字母,则创建一项,值初始化为1
s_dict[i] = 1
else:
s_dict[i]+=1#如果当前字母已存在字典里,则其值加1
s_dict_sorted = sorted(s_dict.items(), key=lambda d:d[1], reverse=True)#排序,注意字典按值排序的待排序内容写法:s_dict.items(), key写法=lambda d:d[1]
score = 0
for i in range(len(s_dict_sorted)):
score += (26-i)*s_dict_sorted[i][1]#注意:排序返回的是元组的列表,注意注意,不然找不到值
return score
while True:
try:
N = int(input())
for i in range(N):
print(pretty_score(input()))
except:
break
'''>>> s_dict={'a': 2, 'g': 1, 'h': 1, 'n': 2, 's': 1, 'z': 1}
>>> s_dict
{'a': 2, 'g': 1, 'h': 1, 'n': 2, 's': 1, 'z': 1}
>>> sorted(s_dict.items(), key=lambda kv:kv[1], reverse=True)
[('a', 2), ('n', 2), ('g', 1), ('h', 1), ('s', 1), ('z', 1)]'''