如果您想以最高的置信度检索所有匹配项,max
则不是选项。您首先需要按 key = confidence 对其进行排序(您可以为此目的使用sorted ,并使用operator.itemgetter来检索密钥),然后根据置信度对元素进行分组(您可以使用itertools.groupby )。最终归还信心最高的群体
from itertools import groupby
from operator import itemgetter
groups = groupby(sorted(inlist[0], key = itemgetter(u'confidence'), reverse = True),
key = itemgetter(u'confidence'))
[e[u'categories'] for e in next(groups)[-1]]
例子
>>> inlist = [[{u'categories': [u'health-beauty'], u'confidence': 0.3333333333333333}, {u'categories': [u'activities-events'], u'confidence': 0.6666666666666666}]]
>>> groups = groupby(sorted(inlist[0], key = operator.itemgetter(u'confidence'), reverse = True),key = operator.itemgetter(u'confidence'))
>>> [e[u'categories'] for e in next(groups)[-1]]
[[u'activities-events']]
>>> inlist = [[{u'categories': [u'home-garden'], u'confidence': 0.3333333333333333}, {u'categories': [u'None of These'], u'confidence': 0.3333333333333333}, {u'categories': [u'toys-kids-baby'], u'confidence': 0.3333333333333333}]]
>>> groups = groupby(sorted(inlist[0], key = operator.itemgetter(u'confidence'), reverse = True),key = operator.itemgetter(u'confidence'))
>>> [e[u'categories'] for e in next(groups)[-1]]
[[u'home-garden'], [u'None of These'], [u'toys-kids-baby']]
>>> inlist = [[{u'categories': [u'entertainment'], u'confidence': 1.0}]]
>>> groups = groupby(sorted(inlist[0], key = operator.itemgetter(u'confidence'), reverse = True),key = operator.itemgetter(u'confidence'))
>>> [e[u'categories'] for e in next(groups)[-1]]
[[u'entertainment']]
>>>