python字典推导式(17)

在昨天的文章中,我们介绍了关于 python列表推导式 的使用,字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部。

成都创新互联-专业网站定制、快速模板网站建设、高性价比埇桥区网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式埇桥区网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖埇桥区地区。费用合理售后完善,10年实体公司更值得信赖。

一.字典推导式语法

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:条件表达式

key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理

value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理

'''


{key_exp:value_expforkey,valueindict.items()ifcondition}


'''

语法二:

key:字典中的key

value:字典中的value

dict.items():序列

condition:条件表达式

key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理

value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理

value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理


'''


{key_exp:value_exp1ifconditionelsevalue_exp2forkey,valueindict.items()}


二.字典推导式实战

在以下的内容中涉及到字符串的大小写转换/拆分等函数,不熟悉使用的可以先熟悉以下字符串相关操作:python字符串.

1.在字典中提取或者修改数据,返回新的字典

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设置为小写

dict3={key.lower():value  forkey,valueindict1.items()}

print(dict3)


# 案例三:将字典中所有key是小写字母的value统一赋值为'error'

dict4={key:valueifkey.isupper()else"error"forkey,valueindict1.items()}

print(dict4)

输出结果:

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'}


2.在字符串中提取数据,返回新的字典

在后期的爬虫课程中,我们需要获取cookies并以字典的形式传参,如果cookies是字符串则需要转换为字典,经典代码案例如下:

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"

# 字典推导式

cookies={cookie.split("=")[0]:cookie.split("=")[1]forcookieincookies.split("; ")}

print(cookies)

输出结果:

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,每一个’;’构成一个键值对;多个键值对构成一个字典;

1.根据’;’将字符串拆分为列表;

2.根据第一步获取的列表,遍历时将每一个字符串根据’=’再次拆分;

3.根据第二步拆分的结果,列表第一个元素作为key,列表第二个元素作为value;

三.重点总结

字典推导式和列表推导式的效率均比普通的for循环效率更高,注意字典推导式与列表推导式的区别:

1.列表推导式返回列表,表达式在中括号[]中

2.字典推导式返回字典,表达式在大括号{}中


文章题目:python字典推导式(17)
当前网址:http://myzitong.com/article/ispjdi.html