昨天我们已经学了列表推导式,那大家可以思考一下,字典跟集合推导式又是怎样的?
list1 = ['name', 'age', 'gender']list2 =['Tom',20,'male']person = {'name':'Tom', 'age':20, 'gender':'male'}
字典推导式作用:快速合并列表为字典或提取字典中目标数据
① 字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。
② 字典推导式格式:
变量 = {key:value for key, value in 序列}
创建一个字典:字典key式1-5数字,value是这个数的2次方。
dict1 = {1:1, 2:4, 3:9, 4:16, 5:25}
dict1 = {i:i**2for i in range(1, 6)}print(dict1)
把两个列表合并为一个字典
list1 = ['name', 'age', 'gender']list2 = ['Ben', 18, 'male']person = {list1[i]:list2[i] for i in range(len(list1))}print(person)
提取字典中的目标数据
counts = {'MBP':268, 'HP':125, 'DELL':201, 'Lenovo':199, 'ACER':99}#需求:提取上述电脑数量大于等于200的字典数据counts = {key:value for key, value in counts.items() if value >= 200}print(counts)
集合推导式跟列表推导式非常相似,唯一区别在于用{} 代替 [].
思考:为什么需要集合推导式,列表推导式不香么?
答:集合的最大特点就是去重
创建一个集合,数据为下方列表的2次方
list1 = [1, 1, 2]set1 = {1, 4}
集合推导式
list1 = [1, 1, 2]set1 = {i**2for i in list1}print(set1)
已知一个未知的API数据如下:
api_response = {'data': [ {'token': '43214', 'tsym': 'NIFTY07DEC23C20700', 'exch': 'NFO', 'price': 150.5}, {'token': '43218', 'tsym': 'NIFTY07DEC23P20700', 'exch': 'NFO', 'price': 120.0}, {'token': '43206', 'tsym': 'NIFTY07DEC23C20600', 'exch': 'NFO', 'price': 180.8}, {'token': '43207', 'tsym': 'NIFTY07DEC23P20600', 'exch': 'NFO', 'price': 95.5} ]}
要求:使用推导式提取下面的关键信息。
{'43214': 'NIFTY07DEC23C20700', '43218': 'NIFTY07DEC23P20700', '43206': 'NIFTY07DEC23C20600', '43207': 'NIFTY07DEC23P20600'}