我应该在这里使用哪种数据结构?

2024-04-19 06:23:32 发布

您现在位置:Python中文网/ 问答频道 /正文

新来的程序员。目前,我有一本词典为我的程序包含所有的年份和多少字,每年在文学中使用。你知道吗

我现在需要做的是,通过查找用户给定的特定单词,找到所述年份的相对频率。相对频率是用特定单词的使用次数除以该年使用的单词总数得出的。你知道吗

我是否需要再编一本字典,里面有年份和该词在那一年被使用的次数?或者完全不同的数据结构?我还应该提到,用户提供了开始和结束日期。你知道吗

下面是我目前拥有的字典的功能。如果你有任何建议如何使这个更好,我也洗耳恭听!你知道吗

yearTotal = dict()
def addTotal():
    with open('total_counts.csv') as allWords:
        readW = csv.reader(allWords, delimiter=',')
        for row in readW:
            yearTotal[row[0]] = row[1]

addTotal()

Tags: csv用户程序字典单词次数词典程序员
1条回答
网友
1楼 · 发布于 2024-04-19 06:23:32

我假设你没有很多年(可能有几百年),所以我希望列表和字典有相似的查找时间。然而,字典在语义上更方便。你知道吗

同时,在每一年中,你可能会有很多单词,所以最好使用常量(O(1))查找的结构,所以dict就是这样。你知道吗

from collections import defaultdict

yearTotal = defaultdict(labda: defaultdict(int))

fh = open('total_counts.csv')
for year, word in csv.reader(fh, delimiter=","):
    yearTotal[year][''] += 1  # here we'll cache the number of words
    yearTotal[year][word] += 1

# ...
word = "foo"
year = "1984"
relative_frequency = float(yearTotal[year][word]) / yearTotal[year]['']

相关问题 更多 >