本文作者:晨海旭日捷泞。原創(chuàng)文章岛琼,轉(zhuǎn)載請(qǐng)注明出處。
# 定義一個(gè)list一罩,里面的值是dict
students = [{'name':'張三','性別':'男','age':15},
{'name':'劉麗麗','性別':'女','age':25},
{'name':'李艷','性別':'女','age':35},
{'name':'王五','性別':'男','age':35},
{'name':'劉剛','性別':'男','age':17},
{'name':'李明明','性別':'男','age':19}]
# 1月趟、輸出姓名包含“李”的dict灯蝴。思考:需要遍歷list,還要過(guò)濾孝宗,該用什么穷躁,恩!列表表達(dá)式因妇!
>>> print([stu for stu in students if "李" in stu["name"]])
[{'name': '李艷', '性別': '女', 'age': 35}, {'name': '李明明', '性別': '男', 'age': 19}]
# 思考:使用filter是否可行折砸?
>>> print(list(filter(lambda x:"李" in x["name"], students)))
[{'name': '李艷', '性別': '女', 'age': 35}, {'name': '李明明', '性別': '男', 'age': 19}]
# 2、輸出姓名包含“李”的姓名列表沙峻。思考:既然上步都能輸出list中的字典,那取dict中的某個(gè)值不就簡(jiǎn)單了两芳。
>>> print([stu["name"] for stu in students if "李" in stu["name"]])
['李艷', '李明明']
#思考:那filter行不行呢摔寨?自然是行的,但不簡(jiǎn)潔怖辆。
>>> print([ stu["name"] for stu in list(filter(lambda x:"李" in x["name"], students))])
['李艷', '李明明']
#思考有沒(méi)有別的方法呢是复?也有,可以用map竖螃,但并不簡(jiǎn)潔淑廊!
>>> print([x for x in list(map(lambda stu:stu["name"], students)) if "李" in x])
['李艷', '李明明']
#3、我想輸出最大的年齡怎么辦特咆。思考:應(yīng)先取出所有年齡季惩,再取最大的那個(gè)。
>>> print(max(list(map(lambda x:x["age"], students))))
35
#思考:有沒(méi)有其他的辦法,肯定有画拾,不列舉了啥繁。
#4、我想輸出所有年齡最大的dict怎么辦青抛。思考:第三個(gè)輸出了最大年齡旗闽,這個(gè)要輸出對(duì)應(yīng)dict。
>>> print(list(filter(lambda y:y["age"] == max(list(map(lambda x:x["age"], students))), students)))
[{'name': '李艷', '性別': '女', 'age': 35}, {'name': '王五', '性別': '男', 'age': 35}]
#又臭又長(zhǎng)有木有蜜另,暫時(shí)沒(méi)想到好方法适室,當(dāng)然for循環(huán)是可以的。
#5举瑰、我想按年齡降序排序(35后就會(huì)很難暗妨尽!)嘶居。排序有兩個(gè)方法罪帖,sort和sorted,sort是list的方法邮屁,注意該方法是對(duì)原始的list排序整袁,返回值是None,sorted可以對(duì)很多數(shù)據(jù)類(lèi)型排序佑吝。
>>> print(sorted(students, key = lambda stu:stu["age"], reverse = True))
[{'name': '李艷', '性別': '女', 'age': 35}, {'name': '王五', '性別': '男', 'age': 35}, {'name': '劉麗麗', '性別': '女', 'age': 25}, {'name': '李明明', '性別': '男', 'age': 19}, {'name': '劉剛', '性別': '男', 'age': 17}, {'name': '張三', '性別': '男', 'age': 15}]
# sort方法如何做呢坐昙?
>>> students.sort(key = lambda stu:stu["age"], reverse = True); print(students)
[{'name': '李艷', '性別': '女', 'age': 35}, {'name': '王五', '性別': '男', 'age': 35}, {'name': '劉麗麗', '性別': '女', 'age': 25}, {'name': '李明明', '性別': '男', 'age': 19}, {'name': '劉剛', '性別': '男', 'age': 17}, {'name': '張三', '性別': '男', 'age': 15}]