“groupby”聚合函数与字典理解

2024-10-01 04:48:20 发布

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

我有一系列的配对(名字,分数),有重复出现的名字。我想得到每个名字的最高分数。对于最终结果,名称标签本身是可选的。这是一个有效的实现:

from collections import defaultdict
scores = (('eyal', 76), ('alex', 50), ('oded', 90), ('eyal', 100), ('alex', 99))
distinct = defaultdict(set)
for score in scores:
    distinct[score[0]].add(score[1])
max_scores = [max(distinct[k]) for k in distinct]
print (max_scores)

我想知道,用字典理解能一步到位吗?在


Tags: infrom名称for标签名字collections分数
1条回答
网友
1楼 · 发布于 2024-10-01 04:48:20
In [22]: dict(sorted(scores))
Out[22]: {'alex': 99, 'eyal': 100, 'oded': 90}

这是基于这样一个观察:一旦我们对元组进行排序,我们只想为每个名称保留最后一个元组,dict()就很好地做到了这一点。在

或者

^{pr2}$

这是更详细,但也更一般。例如,它可以很容易地用于计算平均得分,而第一个解决方案则不能

相关问题 更多 >