Python 如何解释返回前n个值时的关系?
我有一本从Twitter收集的顶级价值字典,下面是一个小例子:Python 如何解释返回前n个值时的关系?,python,dictionary,Python,Dictionary,我有一本从Twitter收集的顶级价值字典,下面是一个小例子: {'aberdeen': 5, 'amsterdam': 6, 'amsterdam?fussa': 6, 'anchorage': 12, 'andalucia?granada': 5, 'ann arbor': 6, 'aral': 6, 'arlington': 6, 'asia?london': 6, 我有两个返回前n个结果的功能: def top_items(item_counts, n=3):
{'aberdeen': 5,
'amsterdam': 6,
'amsterdam?fussa': 6,
'anchorage': 12,
'andalucia?granada': 5,
'ann arbor': 6,
'aral': 6,
'arlington': 6,
'asia?london': 6,
我有两个返回前n个结果的功能:
def top_items(item_counts, n=3):
counts = Counter(item_counts)
most_common = counts.most_common(n)
for item in zip(*most_common):
return list(item)
及
两者都检索前n个结果。然而,我在解释关系时遇到了一些问题。在本例中,排名前几位的城市是[‘洛杉矶’、‘芝加哥’、‘丹佛’],然而丹佛和纽约市的计数都是8,但它返回丹佛是因为它的第一个字母是按字母顺序排列的
我如何编辑我的代码以返回包括ties在内的前n个值的字典键
谢谢 您可以首先通过排序找到顶部值,并将其与所有值进行比较:
di = {'aberdeen': 5,
'amsterdam': 6,
'amsterdam?fussa': 6,
'anchorage': 12,
'andalucia?granada': 5,
'ann arbor': 6,
'aral': 6,
'arlington': 6,
'asia?london': 6
}
def getTopResults(di: dict, n):
final = {}
topValues = sorted(di.values())[:n+1]
for k, v in di.items():
if v in topValues:
final[k] = v
return final
print(getTopResults(di, 2)) # {'aberdeen': 5, 'amsterdam': 6, 'amsterdam?fussa': 6, 'andalucia?granada': 5, 'ann arbor': 6, 'aral': 6, 'arlington': 6, 'asia?london': 6}
您可以首先通过排序找到顶部值,并将其与所有值进行比较:
di = {'aberdeen': 5,
'amsterdam': 6,
'amsterdam?fussa': 6,
'anchorage': 12,
'andalucia?granada': 5,
'ann arbor': 6,
'aral': 6,
'arlington': 6,
'asia?london': 6
}
def getTopResults(di: dict, n):
final = {}
topValues = sorted(di.values())[:n+1]
for k, v in di.items():
if v in topValues:
final[k] = v
return final
print(getTopResults(di, 2)) # {'aberdeen': 5, 'amsterdam': 6, 'amsterdam?fussa': 6, 'andalucia?granada': 5, 'ann arbor': 6, 'aral': 6, 'arlington': 6, 'asia?london': 6}
输出
['anchorage',
'amsterdam',
'amsterdam?fussa',
'ann arbor',
'aral',
'arlington',
'asia?london']
输出
['anchorage',
'amsterdam',
'amsterdam?fussa',
'ann arbor',
'aral',
'arlington',
'asia?london']
所以你想要一组结果,对吗?难道你就不能排序并使用[:3]?所以你想要一组正确的结果吗?你就不能排序并使用[:3]吗?