在这个场景中使用的最佳python数据结构是什么



我正在努力找出在我的代码中使用的最佳数据结构,我考虑过字典、字典列表、类等,但不确定什么最有效、最快使用。

我编写的程序打开多个文本文件,并根据特定标准选择单词,然后我需要跟踪所选的唯一单词、它们出现的句子、它们出现在的文件,以及在整个过程中它们总共出现的次数。

当我迭代选择的单词时,我需要检查每个选择的单词是否已经添加到数据结构中(它将包含数千个单词(。

如果它已经被添加,那么将它来自的文件以及单词所在的句子添加到列表中,并递增计数。

如果还没有,那么将单词添加到数据结构、文件和句子中,并将计数初始化为1。

我并没有真正受到内存的限制,但速度是一个重要因素,所以我认为像C风格的trie这样的东西可以工作,但不确定在python中实现它的最佳方式是什么。

你会怎么做?

我认为最好使用列表,这样你就可以根据你的条件添加单词的数量。你可以将每个选定的单词分配给数组的每个元素。希望这对你有帮助:(

字典是一种合适的数据结构,使用单词作为键,使用单词计数作为值。在引擎盖下,这是一个散列映射,通过获取密钥的散列来提供快速查找时间。要增加现有单词的值或添加新单词,如果单词尚未出现,则可以使用默认值为0get方法。

word_count = {}
for w in ["red", "blue", "red", "green"]:
word_count[w] = word_count.get(w, 0) + 1
print(word_count)

>>> {"red": 2, "blue": 1, "green": 1}

我认为这是最简单的方法,应该足够快,但如果你对其他方法感兴趣,这个问题将讨论trie实现的基础。

正如评论中提到的,目前还不清楚哪种方法会更快,唯一的方法是进行基准测试。尝试多次为大量数据值运行这两个实现,看看哪一个运行得更快!

最新更新