2013-06-30 5 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

사전이나 목록에 '항목'방법이 없습니다. –

답변

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

result 더 이상 사전 아니다 다음

내 코드입니다.

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

가 정렬 된 사전을 만들기위한 OrderedDict에서보세요 : 내가 잘못 아냐 경우

, 당신의 문제는 (lines 가정 어디에서 유래)이 방법으로 해결할 수 있습니다.

+0

그 밖의 방법으로 나는 값으로 사전을 정렬 할 수있어서 원하는 operaions을 수행 할 수 있습니다. – nish

+0

@naka : 사전을 정렬 할 수있는 방법이 없습니다. 사전에는 순서가 없습니다. –

+0

@naka 소트리스트'result'를'collections.OrderedDict'에 건네줍니다. –

관련 문제