假设我有一组单词。对于任何给定的单词,我想知道它是否已经在集合中。什么是一些有效的数据结构和/或算法来实现它?
例如,以下方式使用哈希表是一种好方法吗?
首先使用一些哈希函数和哈希表来存储单词集。
给定一个查询词,计算其哈希值并查看它是否在哈希表中。
谢谢!
答案 0 :(得分:2)
mywords = set(["this", "is", "a", "test"])
"test" in mywords # => True
"snorkle" in mywords # => False
答案 1 :(得分:2)
Python有一套。例如:
>>> foo = set()
>>> foo.add('word')
>>> 'word' in foo
True
>>> 'bar' in foo
False
答案 2 :(得分:2)
是的,python有一个使用HashTable实现的本机字典数据结构,因此in运算符在字典上的O(1)时间内执行。 Per Allen Downey在Think Python
in运算符对列表和词典使用不同的算法。 对于列表,它使用搜索算法,如第8.6节所述。作为清单 时间越长,搜索时间就越长。对于 字典,Python使用一种称为哈希表的算法 可重新标记的属性:in运算符占用大约相同的数量 时间,无论字典中有多少项目。
答案 3 :(得分:2)
或者,如果您在一段时间内构建了大量单词,并且单词不长,请考虑使用trie。