新彩天欢迎您!
幻海优品

Python 查找列表(list)中最小或最大的唯一对象元素的方法及示例代码

示例数据:

[{'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 step3print(find(data))

2、通过itertools中groupby实现

from itertools import groupbydata = [{'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)

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除