python - 如何唯一化元组元素?

标签 python algorithm

我有一个字典的结果元组。

result = ({'name': 'xxx', 'score': 120L }, {'name': 'xxx', 'score': 100L}, {'name': 'yyy', 'score': 10L})

我想统一化它。 uniqify操作后 result = ({'name': 'xxx', 'score': 120L }, {'name': 'yyy', 'score': 10L})

结果只包含每个name一个字典并且dict应该有最高分数。最终结果应该采用相同的格式,即字典的元组。

最佳答案

from operator import itemgetter

names = set(d['name'] for d in result)
uniq = []
for name in names:
    scores = [res for res in result if res['name'] == name]
    uniq.append(max(scores, key=itemgetter('score')))

我确信有一个更短的解决方案,但您将无法避免首先以某种方式按名称过滤分数,然后找到每个名称的最大值。

将分数存储在以名称作为键的字典中绝对是更可取的。

关于python - 如何唯一化元组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3665414/

相关文章:

python - 在 csv 的单个单元格中写入多个值

python - django 1.8-如果表单条目查询结果与数据库不匹配,则在同一页面上显示警报消息,而不是 "None"或引发异常页面

Python从一个巨大的字符串中提取电子邮件地址

python return not & and 是什么意思?

java - 从矩阵的一点移动到零的位置

algorithm - 平衡链表列表,使它们的总和差异尽可能小?

javascript - 搜索算法

python合并复杂的YAML

algorithm - 龟兔赛跑算法

python - Cooley-Tukey 算法 python 超出范围