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

如何在python中从orderedDict中删除条目,python,dictionary,Python,Dictionary,我正试图根据价值从字典中获取前20个条目。我使用orderedDict按值对条目进行排序。但是,当我试图从OrderedICT中删除一个条目(以保持OrderedICT的恒定长度,即20)时,它不会发生 我编写了以下代码: while linecount>0: line=images.readline().split() #compute "score" for each line if (len(result)<20): result.upd

我正试图根据价值从字典中获取前20个条目。我使用orderedDict按值对条目进行排序。但是,当我试图从OrderedICT中删除一个条目(以保持OrderedICT的恒定长度,即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})
一旦得到(21)值,结果的长度仍然是21


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

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

result.popitem(last=False)
返回删除后的第一个或最后一个键值。将
last
设置为
False
表示要删除第一个

请注意,您可以仅针对第一个值进行测试:

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

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

result.popitem(last=False)
返回删除后的第一个或最后一个键值。将
last
设置为
False
表示要删除第一个

请注意,您可以仅针对第一个值进行测试:

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