2013-06-30 67 views
1

我得到一個意外的錯誤。我意識到有些帖子有類似的錯誤,但是無法理解答案,或者無法將其與我的案例(詞典)聯繫起來。python字典錯誤AttributeError:'list'對象沒有屬性'item'

我想爲輸入文件的每一行計算相似性分數,並且在每次迭代中(即輸入文件的每一行)都會將分數的前20個值存儲在字典中。

以下是我的代碼:

result={} 
//code for computation of score for each line of an input file 

if (len(result)<20): 
    result[str(line)]=score 
else: 
    if(len(result)==20): 
     result = sorted(result.iteritems(), key=operator.itemgetter(1)) 
     if(result.item()[19].value()<score): 
      result.item()[19][str(line)]=score 

的錯誤是:

File "retrieve.py", line 45, in <module> 
if(result.item()[19].value()<score): 
AttributeError: 'list' object has no attribute 'item' 
+1

字典或列表沒有'item'方法。 –

回答

3
result = sorted(result.iteritems(), key=operator.itemgetter(1)) 

result不是一本字典了。

如果我沒有記錯,你的問題就可以解決這樣(假設lines來自某處):

result = sorted({(calculate_score(line), line) for line in lines}) 
print(result[:20]) 

OrderedDict看看製作一個有序字典。

+0

我還能如何按價值排序字典,以便我可以執行我想要的操作 – nish

+0

@naka:沒有辦法對字典進行排序:字典沒有訂單。 –

+0

@naka將排序後的結果列表傳遞給'collections.OrderedDict'。 –

相關問題