为每个键为tup的子键获取排序字典中的前项

2024-09-30 02:24:55 发布

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

我有一个字典,其中key和value是元组,其中key是(queryID,sentence),value是(score,documentID)(在key和value元组中,第一项是数字,第二项是字符串)。在

d={(1,'bla bla'):(10,'doc1'),(1,'yada yada'):(20,'doc2'),(2,'bla bla'):(30,'doc1'),(2,'more of the same'):(40,'doc3')}

我已经按查询ID对这个dict进行了分组,并按分数排序,因此对于每个查询ID,我都有按分数排序的项目。在

我想做的是为每个查询ID获取已经排序的dict中的前k项。 因此,如果查询ID=1有100个项目,qID=2也有相同的项目,我希望为每个项目获取排序后的dict中的前k个项目。 怎么能做到呢?在

这是我代码的一部分-为了得到排序的dict-

^{pr2}$

Tags: 项目keyid字典排序valuedoc1分数
2条回答

您只需遍历字典并附加一个结果数组。我想如果qID线性增加1:

results=[]
i = 1

for key in d:
    if key[0]==i:
        currentResult=d[key]
    else:
        results.append(currentResult)
        currentScore=0
        i+=1
results.append(currentResult)

这只适用于只有一个项目的最高分数,但它可以很容易地附加到工作的多个项目相同的分数。在

^{pr2}$

我想这样的事情应该行得通。在

这将使用排序的_dict变量来获取与每个查询ID相关的前K个最高分数

k = 2 #assign how many top values you want to see
id = 1 #assign queryID 
topK = [val for key,val in sorted_dict.items() if key[0] == id][0:k]
print topK

相关问题 更多 >

    热门问题