python-文件字符分布【get()函數與.sort(key=lambda x:x[0],reverse = False)】


文件字符分布

描述

統計附件文件的小寫字母a-z的字符分布,即出現a-z字符的數量,並輸出結果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

同時請輸出文件一共包含的字符數量。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

注意輸出格式,各元素之間用英文逗號(,)分隔。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

答案可能包含a-z共26個字符的分布,如果某個字符沒有出現,則不顯示,輸出順序a-z順序。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

輸入輸出示例

僅格式示例,非最終答案。
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

  輸入 輸出
示例 1  
共999字符,a:11,b:22,c:33,d:44,e:55

 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

 #我的做法

fo = open("latex.log","r")  #打開文件
t =0
lt = {}  #創建字典
for item in fo:  #遍歷fo
    for j in item:   #統計字符數量
        t+=1
        if j>='a'and j<='z':
            lt[j] = lt.get(j,0)+1#用當前字符j索引字典,若在,次數+1;若不在,加到字典中,賦給當前值為0,+1
items = list(lt.items())#字典轉換為列表
print("共{}字符".format(t),end = '')#不換行
items.sort(key=lambda x:x[0],reverse = False)#按第一維[0],以默認的從小到大方式排序,reverse = false 不反轉
for item in items:
    print(",{}:{}".format(item[0],item[1]),end = '')

 其中涉及的知識點

1,.get(<元素>,0)     以 lt.get ( j,0 ) +1為例

 對字典lt 索引其中的 j 元素對應的值。

    1)若字典lt為空,此時函數的作用為檢測並生成新元素,同時對新元素初始化為0,由於遇見了新元素,返回值+1

     2)若字典lt不為空,當檢測出新元素時遵從1),當再次遇見相同元素時,返回值+1

2,.sort(key=lambda x:x[0],reverse = False)

     1)sort()   默認從小到大方式排序

     2)key=lambda x:x[0]

        x:x[ ]字母可隨意修改,排序方式按括號中[ ]里面的維度進行排序

        [0]按第一維,[2]按第三維

      3)reverse()函數

        列表類型操作函數,其結果是直接改變列表本身(節省空間),直接把原來的list改為反轉后的列表,返回值為空(None),因此直接引用逆序輸出

        reverse = false 以默認的方式排序,不反轉;reverse = true 反轉

#參考答案

f = open("latex.log")
cc = 0
d = {}
for i in range(26):
    d[chr(ord('a')+i)] = 0
for line in f:
    for c in line:
        d[c] = d.get(c, 0) + 1
        cc += 1
print("共{}字符".format(cc), end="")
for i in range(26):
    if d[chr(ord('a')+i)] != 0:
        print(",{}:{}".format(chr(ord('a')+i), d[chr(ord('a')+i)]), end="")
#使用 ord('a')+i 配合 range()函數 可以遍歷一個連續的字符表。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM