有没有办法提高计数函数的代码效率?

问题描述

下面是我的代码,用于查找单词数量、最常用单词和字符频率:

from string import punctuation
from collections import defaultdict
from operator import itemgetter
import string

def reader(path):
    words = str
    x=0
    distinct = list()
    c = 0
    d = dict()
    dd = defaultdict(int)   
    try:
        f = open(path,'r',encoding='utf8')  
    except FileNotFoundError:
        print("Wrong file name of file path \n")

    else:
        for line in f:
            
            punc_translator = str.maketrans({key: None for key in punctuation})
            cleanString = line.translate(punc_translator)
            words = cleanString.split()
            length = len(cleanString.split())
            c = c + length
            cleanString = cleanString.lower()
            for keys in cleanString:
                d[keys] = d.get(keys,0) + 1


           
            for i in line:
                for k,v in d.items():
                    if i==k:
                        v+=1
            for i in words:
                dd[i] += 1
            
    for i,j in dd.items():
        if j==1:
            distinct.append(i)
    t = sorted(d.items(),key=itemgetter(1),reverse=True)
    s = sorted(dd.items(),reverse=True)
           

    return c,len(distinct),s[:25],t

def main():

    """ Main Menu """
while True:
    try:
        a = input("Enter file path \n")
        b,c,d,e = reader("C://Users/Documents/74-0.txt")
        print("The summary is: \n")
        print("Total number of words are ",b,"\n")
        print("Total number of distinct words are","\n")
        print("Top 25 frequent words and their counts are: \n","\n")
        print("Character frequency sorted from most frequent to least frequent characters: \n",e,"\n")
        break
    except:
        print("Invalid path")
        pass


if __name__=='__main__':
    main()

有没有办法提高这段代码的效率。我已经在使用字典了,我知道我可以使用 Collections Counter。有没有办法使用递归来做到这一点,或者还有其他方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...