如何在python中从orderedDict中删除条目

2024-05-28 23:06:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从字典中获得前20个词条。我用orderedDict按值对条目进行排序。但当我试图从orderedDict中删除一个条目(以保持orderedDict的恒定长度,即20)时,它不会发生。

我写了以下代码:

while linecount>0:
    line=images.readline().split()
    #compute "score" for each line
    if (len(result)<20):
        result.update({(str(line)):score})
    else:
            if(len(result)==20):
                   result=OrderedDict(sorted(result.items(), key=lambda t: t[1]))
                   if(result.items()[0][1]<score):
                       del result.items()[0]
                       temp=str(line)
                       result.update({temp:score})

但删除/移除不会在以下步骤中发生:

 del result.items()[0]

结果的长度一旦达到那个(21)值就保持为21

我做错了什么,我还能怎么做?


Tags: lenif字典lineupdate条目itemsresult
1条回答
网友
1楼 · 发布于 2024-05-28 23:06:57

您正在从.items()返回的列表中删除一个项。您需要从字典中删除:

result.popitem(last=False)

^{}返回删除后的第一个或最后一个键值。将last设置为False要删除第一个信号的信号。

注意,您可以对进行测试,只要第一个值:

if result.values()[0] < score:

我也只对一个元素使用键赋值而不是.update()

result[str(line)] = score  # instead of temp=str(line); result.update({temp:score})

相关问题 更多 >

    热门问题