在昨天的文章中,我們介紹了關(guān)于?python列表推導(dǎo)式?的使用,字典推導(dǎo)式使用方法其實也類似,也是通過循環(huán)和條件判斷表達(dá)式配合使用,不同的是字典推導(dǎo)式返回值是一個字典,所以整個表達(dá)式需要寫在{}內(nèi)部。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了湖里免費(fèi)建站歡迎大家使用!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ''' 語法一: key:字典中的key value:字典中的value dict.items():序列 condition:條件表達(dá)式 key_exp:在for循環(huán)中,如果條件表達(dá)式condition成立(即條件表達(dá)式成立),返回對應(yīng)的key,value并作key_exp,value_exp處理 value_exp:在for循環(huán)中,如果條件表達(dá)式condition成立(即條件表達(dá)式成立),返回對應(yīng)的key,value并作key_exp,value_exp處理 ''' {key_exp:value_expforkey,valueindict.items()ifcondition} ''' 語法二: key:字典中的key value:字典中的value dict.items():序列 condition:條件表達(dá)式 key_exp:在for循環(huán)中,如果條件表達(dá)式condition成立(即條件表達(dá)式成立),返回對應(yīng)的key,value并作key_exp,value_exp處理 value_exp1:在for循環(huán)中,如果條件表達(dá)式condition成立(即條件表達(dá)式成立),返回對應(yīng)的key,value并作key_exp,value_exp1處理 value_exp2:在for循環(huán)中,如果條件表達(dá)式condition不成立(即條件表達(dá)式不成立),返回對應(yīng)的key,value并作key_exp,value_exp2處理 ''' {key_exp:value_exp1ifconditionelsevalue_exp2forkey,valueindict.items()} |
在以下的內(nèi)容中涉及到字符串的大小寫轉(zhuǎn)換/拆分等函數(shù),不熟悉使用的可以先熟悉以下字符串相關(guān)操作:python字符串.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個人博客地址): shuopython.com @WeChat Official Account(微信公眾號):猿說python @Github:www.github.com @File:python_dict.py @Time:2019/10/1 21:48 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! """ # 案例一:獲取字典中key值是小寫字母的鍵值對 dict1={"a":10,"B":20,"C":True,"D":"hello world","e":"python教程"} dict2={key:valueforkey,valueindict1.items()ifkey.islower()} print(dict2) # 案例二:將字典中的所有key設(shè)置為小寫 dict3={key.lower():value??forkey,valueindict1.items()} print(dict3) # 案例三:將字典中所有key是小寫字母的value統(tǒng)一賦值為'error' dict4={key:valueifkey.isupper()else"error"forkey,valueindict1.items()} print(dict4) |
輸出結(jié)果:
1 2 3 | {'a':10,'e':'python教程'} {'a':10,'b':20,'c':True,'d':'hello world','e':'python教程'} {'a':'error','B':20,'C':True,'D':'hello world','e':'error'} |
在后期的爬蟲課程中,我們需要獲取cookies并以字典的形式傳參,如果cookies是字符串則需要轉(zhuǎn)換為字典,經(jīng)典代碼案例如下:
1 2 3 4 | cookies="anonymid=jy0ui55o-u6f6zd; depovince=GW; _r01_=1; JSESSIONID=abcMktGLRGjLtdhBk7OVw; ick_login=a9b557b8-8138-4e9d-8601-de7b2a633f80; _ga=GA1.2.1307141854.1562980962; _gid=GA1.2.201589596.1562980962; _c1=-100; first_login_flag=1; ln_uact=18323008898; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; jebe_key=88f1340c-592c-4dd6-a738-128a76559f45%7Cad33b3c730fcdc8df220648f0893e840%7C1562981108370%7C1%7C1562981106763; jebe_key=88f1340c-592c-4dd6-a738-128a76559f45%7Cad33b3c730fcdc8df220648f0893e840%7C1562981108370%7C1%7C1562981106765; jebecookies=793eb32e-92c6-470d-b9d0-5f924c335d30|||||; _de=E77807CE44886E0134ABF27E72CFD74F; p=a00d65b1f779614cd242dc719e24c73e0; t=292ba8729a4151c1a357e176d8d91bff0; societyguester=292ba8729a4151c1a357e176d8d91bff0; id=969937120; xnsid=1700b2cc; ver=7.0; loginfrom=null; wp_fold=0" # 字典推導(dǎo)式 cookies={cookie.split("=")[0]:cookie.split("=")[1]forcookieincookies.split("; ")} print(cookies) |
輸出結(jié)果:
1 | {'anonymid':'jy0ui55o-u6f6zd','depovince':'GW','_r01_':'1','JSESSIONID':'abcMktGLRGjLtdhBk7OVw','ick_login':'a9b557b8-8138-4e9d-8601-de7b2a633f80','_ga':'GA1.2.1307141854.1562980962','_gid':'GA1.2.201589596.1562980962','_c1':'-100','first_login_flag':'1','ln_uact':'18323008898','ln_hurl':'http://head.xiaonei.com/photos/0/0/men_main.gif','jebe_key':'88f1340c-592c-4dd6-a738-128a76559f45%7Cad33b3c730fcdc8df220648f0893e840%7C1562981108370%7C1%7C1562981106765','jebecookies':'793eb32e-92c6-470d-b9d0-5f924c335d30|||||','_de':'E77807CE44886E0134ABF27E72CFD74F','p':'a00d65b1f779614cd242dc719e24c73e0','t':'292ba8729a4151c1a357e176d8d91bff0','societyguester':'292ba8729a4151c1a357e176d8d91bff0','id':'969937120','xnsid':'1700b2cc','ver':'7.0','loginfrom':'null','wp_fold':'0'} |
代碼分析:
在字符串cookies中’=’前面是key,’=’后面是value,每一個’;’構(gòu)成一個鍵值對;多個鍵值對構(gòu)成一個字典;
1.根據(jù)’;’將字符串拆分為列表;
2.根據(jù)第一步獲取的列表,遍歷時將每一個字符串根據(jù)’=’再次拆分;
3.根據(jù)第二步拆分的結(jié)果,列表第一個元素作為key,列表第二個元素作為value;
字典推導(dǎo)式和列表推導(dǎo)式的效率均比普通的for循環(huán)效率更高,注意字典推導(dǎo)式與列表推導(dǎo)式的區(qū)別:
1.列表推導(dǎo)式返回列表,表達(dá)式在中括號[]中
2.字典推導(dǎo)式返回字典,表達(dá)式在大括號{}中
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。