壹、實現思路
需要統計字符串中每個字母出現的次數;如果字母是第壹次出現的話,就把次數置為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進行倒序排序了