示例数据:
[ {'Name':'c', 'result': 0}, {'Name':'java', 'result': 1}, {'Name':'python', 'result': 2}, {'Name':'python', 'result': 0}, {'Name':'python', 'result': 1}, ]
示例结果:
[ {'Name':'c', 'result': 0}, {'Name':'java', 'result': 1}, {'Name':'python', 'result': 0}, ]
1、通过sorted()实现
data = [ {'Name':'c', 'result': 0}, {'Name':'java', 'result': 1}, {'Name':'python', 'result': 2}, {'Name':'python', 'result': 0}, {'Name':'python', 'result': 1}, ] def find(data): #最小值 step1 = sorted(data, key=lambda k: k['result']) #最大值 #step1 = sorted(data, key=lambda k: k['result'], reverse = True ) print('step1', step1) step2 = {} for each in step1: if each['Name'] not in step2: step2[each['Name']] = each print('step2', step2) step3 = list(step2.values()) print('step3', step3) print('\n') return step3 print(find(data))
2、通过itertools中groupby实现
from itertools import groupby data = [ {'Name':'c', 'result': 0}, {'Name':'java', 'result': 1}, {'Name':'python', 'result': 2}, {'Name':'python', 'result': 0}, {'Name':'python', 'result': 1}, ] data = sorted(data, key=lambda x: x['Name']) #最小值 res_min = [ {'Name': g, 'result': min(v, key=lambda x: x['result'])['result']} for g, v in groupby(data, lambda x: x['Name']) ] #最大值 res_max = [ {'Name': g, 'result': max(v, key=lambda x: x['result'])['result']} for g, v in groupby(data, lambda x: x['Name']) ] print(res_min) print(res_max)