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

Python 我应该在这里使用哪种数据结构?,python,Python,新来的程序员。目前,我有一本程序字典,包含所有年份以及每年文学中使用的单词总数 我现在需要做的是,通过查找用户给出的特定单词,找到所述年份的相对频率。相对频率是通过将特定单词的使用次数除以该年使用的单词总数来计算的 我是否需要制作另一本包含年份和该词在该年使用次数的词典?还是完全不同的数据结构?我还应该提到,用户提供了开始和结束日期 下面是我目前拥有的字典的函数。如果你有任何关于如何使这个更好的建议,我也洗耳恭听 yearTotal = dict() def addTotal(): wi

新来的程序员。目前,我有一本程序字典,包含所有年份以及每年文学中使用的单词总数

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

我是否需要制作另一本包含年份和该词在该年使用次数的词典?还是完全不同的数据结构?我还应该提到,用户提供了开始和结束日期

下面是我目前拥有的字典的函数。如果你有任何关于如何使这个更好的建议,我也洗耳恭听

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()

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

同时,每年可能会有很多单词,所以最好使用结构和常量(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]['']

每个特定单词被使用了多少次的信息来源在哪里?作为一个新的程序员,考虑数据结构对你很有好处。最佳答案取决于您没有提到的其他一些因素:数据是动态的还是静态的?它有多大,性能有多重要?@TigerhawkT3它在提供给我的另一个文件中,我还没有切掉。@wim谢谢。数据以两个文件的形式提供给我,两个文件都是静态的。此外,这些文件是相当大的csv文件,程序运行速度不是我的首要任务,但可能会很好。编辑:很抱歉,伙计们,我得赶去上班了,但我稍后会回来的,谢谢你们继续提供帮助!。