我有一个字典的结果元组。
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/