1

我收到一个意外错误。我意识到有些帖子有类似的错误,但要么无法理解答案,要么无法将其与我的案例(字典)联系起来。

我正在尝试为输入文件的每一行计算相似度分数,并在每次迭代时(即输入文件的每一行)将分数的前 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'
4

1 回答 1

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以制作有序字典。

于 2013-06-30T17:54:50.560 回答