# 找到名字一样,年龄最大的一个人
# -*- coding: utf-8 -*-
from copy import deepcopy
list1 = [
{"name": "zs", "age": 18},
{"name": "lisi", "age": 16},
{"name": "zs", "age": 20},
{"name": "lisi", "age": 26},
{"name": "lisi", "age": 28},
{"name": "zs", "age": 20},
]
"""
主要思想是:两个之间的元素进行比较,num用来取下一个元素
如果前一个大,那么用item3来进行保留,进行下一次循环的时候,用来进行比较
"""
def distinct_name(list1):
list2 = deepcopy(list1)
num = 0
n = len(list1)
item3 = 0 # 记录比较后大的元素
flag = 0 # 用来控制前一个元素的值为item3还是itme1
for item1 in list1:
if flag != 0:
item1 = item3
name1 = item1.get("name")
age1 = item1.get("age")
if num < n - 1:
item2 = list1[num + 1]
name2 = item2.get("name")
age2 = item2.get("age")
num += 1
if name1 == name2:
if age1 < age2:
list2.remove(item1)
flag = 0
else:
list2.remove(item2)
item3 = item1 # 记录比较后大的元素
flag = 1
else:
flag = 0
return list2
# 首先先把目标列表进行排序
list1.sort(key=lambda x: x["name"])
ret = distinct_name(list1)
print(ret)