我只檢索文件中的唯一單詞,這裏是我迄今爲止的內容,但是有沒有更好的方法可以在大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