2014-02-21 38 views
0

我需要在字典中創建集合。在字典中創建集合

dicInvertedIndex = {} 
docID = 1 

for i in string: 
    if condition: 
    docID += 1 
    dicInvertedIndex[i] = [1, set(docID)] 

,我有一個錯誤:

dicInvertedIndex[i] = [1, set(docID)] 
TypeError: 'int' object is not iterable 

我想在這之前,我在字典中創建的列表和它的作品。

dicInvertedIndex[i] = [ 1 , [ docID ] ] 

它工作。我需要創建我的文檔的鑰匙和(intset()

值的字典一樣dic["awake"] = [5, {2, 30, 99, 234}]

原來我用了一個列表,但它的速度慢了,我想用一組。

+0

'不可迭代'聽起來像是'for'循環。仔細檢查'string'中的內容。 – Kevin

+2

您應該詢問如何解決您的基本問題,而不是爲什麼您的嘗試解決方案無法正常工作。 – roippi

+0

好的,謝謝。我問另一個問題 – Denis

回答

2

set()構造函數採用迭代。 docID是一個整數,因此不可迭代。

有兩種解決方法

{docID} 

set([docID]) 
2

set()的參數預計可迭代,只是把docID在列表中,當你把它傳遞:

dicInvertedIndex[i] = [1, set([docID])] 
+0

謝謝。有沒有更適合我使用的存儲結構? 我需要一個符號頻率(計數),並在哪裏符合 – Denis

1

我不知道你要完成,但我看到你的錯誤。 set構造函數需要一個迭代器,並且你傳遞一個整數。以下是修復:

dicInvertedIndex[i] = [1, set([docID])] 

請注意,docID位於方括號內。