Python 字典推导式

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

一.Python 字典推导式简介

      前面文章中我们介绍了 Python 条件推导式Python 列表推导式实际上就是把多行代码合并为一行代码的操作,使用推导式可以让程序的运行效率更高

      Python 字典推导式是从一个或者多个迭代器快速简洁地创建数据类型的一种方法,它将循环和条件判断结合,从而避免语法冗长的代码,提高代码运行效率能熟练使用推导式也可以间接说明你已经超越了 Python 初学者的水平

Python 列表推导式

      Python 推导式相关:


二.Python 字典推导式语法

      字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部。

'''
语法一:
    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_exp for key,value in dict.items() if condition}

'''
语法二:
    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_exp1 if condition else value_exp2 for key,value in dict.items()}

三.Python 字典推导式实战

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


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

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python Python 字典推导式.py
@Time:2021/3/27 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

# 案例一:获取字典中key值是小写字母的键值对
dict1 = {"a":10,"B":20,"C":True,"D":"hello world","e":"python教程"}
dict2 = {key:value for key,value in dict1.items() if key.islower()}
print(dict2)

# 案例二:将字典中的所有key设置为小写
dict3 = {key.lower():value  for key,value in dict1.items() }
print(dict3)

# 案例三:将字典中所有key是小写字母的value统一赋值为'error'
dict4 = {key:value if key.isupper() else "error" for key,value in dict1.items() }
print(dict4)

'''

{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}


'''
输出结果:
{'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'}
'''

{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}

'''

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

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

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python Python 字典推导式.py
@Time:2021/3/27 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

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] for cookie in cookies.split("; ")}
print(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%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 ;
图片[2]-Python 字典推导式-猿说编程

四.重点总结

      Python 字典推导式和列表推导式的效率均比普通的 for 循环效率更高,在文章 Python 列表推导式文章末尾有做过测试,有兴趣的小伙伴可以直接前往:Python 列表推导式

      注意字典推导式与列表推导式的区别:

  •       1.列表推导式返回列表,表达式在中括号[]中
  •       2.字典推导式返回字典,表达式在大括号{}中

五.猜你喜欢

  1. Python 配置环境
  2. Python 变量
  3. Python 运算符
  4. Python 条件判断 if/else
  5. Python while循环
  6. Python break
  7. Python continue
  8. Python for循环
  9. Python 字符串
  10. Python 列表list
  11. Python 元组tuple
  12. Python 字典 dict
  13. Python 条件推导式
  14. Python 列表推导式
  15. Python 字典推导式

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容