我只检索文件中的唯一单词,这里是我迄今为止的内容,但是有没有更好的方法可以在大O表示法中实现这一点?眼下这为n的平方。如果你想找到的所有独特的文字和考虑foo
一样foo.
查找只出现一次的单词
def retHapax():
file = open("myfile.txt")
myMap = {}
uniqueMap = {}
for i in file:
myList = i.split(' ')
for j in myList:
j = j.rstrip()
if j in myMap:
del uniqueMap[j]
else:
myMap[j] = 1
uniqueMap[j] = 1
file.close()
print uniqueMap
你的意思是独一无二的,因为它们中仅出现一次? – 2015-04-02 12:13:16
是的,单词只出现一次 – godzilla 2015-04-02 12:16:04
这是O(n),而不是O(n^2),因为Python字典/集合查找是O(1),除非你有怪异的键导致_lots_的散列冲突。如果你的代码使用了集合而不是字典,那么它的内存效率会稍高一些,但它们都是作为散列表实现的。但是,使用Counter是一个更好的计划:它使代码更易于阅读,并且将更多工作委托给以C速度运行的代码,而不是在测试时以Python速度运行。 – 2015-04-02 12:31:26