Python 统计字母出现频率

如题所述

代码如下:

#coding=utf-8

# 输入
s = input()

# 统计

d = {}

for c in s:
    d[c] = (d[c] + 1) if c in d else 1

# 输出
for i in d:
    print(i, d[i])

运行结果:

排序版本:

#coding=utf-8

# 输入
s = input()

# 统计

d = {}

for c in s:
    d[c] = (d[c] + 1) if c in d else 1

# 排序
result = sorted(d.items(), key = lambda x:x[1], reverse = True)

# 输出
for i in result:
    print(i[0], i[1])

运行结果;

追问

怎么让输出频率相同的字母按a~z的顺序排列?

追答

频率相同的字母按a~z排序。

#coding=utf-8

# 输入
s = input()

# 统计

d = {}

for c in s:
    d[c] = (d[c] + 1) if c in d else 1

# 排序
# 先按字母排序
result = sorted(d.items(), key = lambda x:x[0], reverse = False)
# 再按频率排序
result = sorted(result, key = lambda x:x[1], reverse = True)

# 输出
for i in result:
    print(i[0], i[1])

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-03
你好,你可以考虑使用下面的代码:
inputStr=“adhdbxhsjjsbbsxjdjjebbxbsheuhdbbd”
ResultDict={}
for index in range(len(inputStr)):
if inputStr[index] in ResultDict:
ResultDict[inputStr[index]] +=1
else:
ResultDict[inputStr[index]]=1

for each in ResultDict:
print(each +” “ +str(ResultDict[each]))追问

怎么按照字母出现的频率从大到小输出啊

追答

你好,更新的代码和结果如下

inputStr="adhdbxhsjjsbbsxjdjjebbxbsheuhdbbd"
ResultDict={}
for index in range(len(inputStr)):
    if inputStr[index] in ResultDict:
        ResultDict[inputStr[index]] +=1
    else:
        ResultDict[inputStr[index]]=1
for each in sorted(ResultDict.keys()):
 print(each + " " +str(ResultDict[each])) 
    
print (sorted(ResultDict.items(), key=lambda x: x[1]))

第一排序结果

a 1
b 8
d 5
e 2
h 4
j 5
s 4
u 1
x 3

第二排序的结果
[('a', 1), ('u', 1), ('e', 2), ('x', 3), ('h', 4), ('s', 4), ('d', 5), ('j', 5), ('b', 8)]

你好,更新的代码和结果如下

inputStr="adhdbxhsjjsbbsxjdjjebbxbsheuhdbbd"
ResultDict={}
for index in range(len(inputStr)):
    if inputStr[index] in ResultDict:
        ResultDict[inputStr[index]] +=1
    else:
        ResultDict[inputStr[index]]=1
for each in sorted(ResultDict.keys()):
 print(each + " " +str(ResultDict[each])) 
    
print (sorted(ResultDict.items(), key=lambda x: x[1]))

第一排序结果

a 1
b 8
d 5
e 2
h 4
j 5
s 4
u 1
x 3

第二排序的结果
[('a', 1), ('u', 1), ('e', 2), ('x', 3), ('h', 4), ('s', 4), ('d', 5), ('j', 5), ('b', 8)]

相似回答