本文作者:晨海旭日。原創(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ù)類型排序。
>>> 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}]