发布网友 发布时间:2022-04-25 07:46
共1个回答
热心网友 时间:2022-04-06 06:57
一、实现思路
需要统计字符串中每个字母出现的次数;如果字母是第一次出现的话,就把次数置为1,如果字母非第一次出现的话,就需要在原字母已保存次数上加1;仔细思考一下,需要保存字母和出现次数,然后相同字母出现多次的话,需要在原字母保存的次数加1;字典这种数据类型可以实现这种需求。
二、代码实现
2.1 统计字母出现次数
统计字符串每个字母出现次数源码:
def count_each_char(str):
dict = {}
for i in str:
if i not in dict:
dict[i] = 1
else:
dict[i] += 1
return dict
if __name__ == "__main__":
res = count_each_char("abdefdcsdf")
print(res)
简化版统计字符串字母出现次数源码:
dict[i] 表示的是字典中字母对应的value(出现次数)
dict.get(i,0)+1 表示的是从字典获取字母,如果字典中没有查找到对应字母,则将字母i,次数1存入字典
def count_each_char(str):
dict = {}
for i in str:
dict[i]=dict.get(i,0)+1
return dict
运行结果:
2.2 按字母出现次数排序
根据字母出现次数倒序排列源码:
def count_each_char_sort_value(str):
dict = {}
for i in str:
dict[i] = dict.get(i, 0) + 1
# sorted 方法会生成一个排序好的容器
# operator.itemgetter(1) 获取字典第一维的数据进行排序
# reverse 表示倒序排列
dict=sorted(dict.items(),key= operator.itemgetter(1),reverse=True)
return dict
if __name__ == "__main__":
res = count_each_char_sort_value("abdefdcsdf")
print(res)
运行结果:
从运行结果可以看出,通过调用sorted方法,已经根据指定的key进行倒序排序了