在昨天的文章中,我们介绍了关于** 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字符串.

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

# !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: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)

输出结果:

{'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是字符串则需要转换为字典,经典代码案例如下:

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;

代码

三.重点总结

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

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

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

猜你喜欢:

1.python列表推导式

2.python字典

3.python列表

4.python for循环

转载请注明:猿说Python » python字典推导式

技术交流、商务合作请直接联系博主,微信扫码或搜索:猿说python

python教程公众号

python中的字典推导式_17.python 字典推导式(经典代码)相关推荐

  1. python中的命名空间_深入理解Python中的命名空间和范围

    Python中的命名空间和范围 在Python中,每个包.模块.类.函数和方法函数都拥有一个"名称空间",其中解析了变量名称.下面本篇文章就来带大家认识一下Python中的命名空间 ...

  2. Python教学 | Python 中的分支结构(判断语句)【附本文代码和数据】

    查看原文:[数据seminar]Python教学 | Python 中的分支结构(判断语句)[附本文代码和数据] Part1引言 上期文章我们学习了组合数据类型字典以及元组,这标志着 Python 基 ...

  3. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  4. python中获取文件大小_如何在Python中获取文件大小

    python中获取文件大小 We can get file size in Python using the os module. 我们可以使用os模块在Python中获取文件大小. Python中的 ...

  5. python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想

    [递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...

  6. python统计元音字母个数_计算Python中的元音(Counting vowels in python)

    计算Python中的元音(Counting vowels in python) def main(): print(count) def countVowels(string): vowel=(&qu ...

  7. python中输入字符串_简单讲解Python中的字符串与字符串的输入输出

    简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...

  8. python中可以作为定界符_在 Python 中,字典和集合都是用一对 作为定界符,字典的每个元素有两部分组成,即 和 ,其中 不允许重复。_学小易找答案...

    [多选题]路由器A的G0/0/1接口配置信息如下,下列说法正确的有?(多选) acl number 3000 rule 5 deny 17 rule 10 deny 89 rule 15 deny 6 ...

  9. python中元组和列表转化_4.Python列表/元组/集合/字典

    4.1 Python列表 • 列表用 [ ] 标识,是Python 最通用的复合数据类型. • 列表用 [ ] 表示,列表具有可嵌套性 4.1.1 Python列表截取 • 列表可以使用 [头下标:尾 ...

最新文章

  1. C语言:随笔8--结构体
  2. 国美零售引入AI图像识别技术 线下自动识别用户数据
  3. 一位老司机谈谈掏心窝子的话
  4. python书籍推荐知乎-python入门书籍(爬虫方面)有哪些推荐?
  5. JavaSE学习笔记(二十九)—— 其它流
  6. 苹果看好医疗健康产业 AI技术将变革
  7. 解密昇腾AI处理器--DaVinci架构(控制单元)
  8. c语言程序2048_C语言2048小游戏演示和说明
  9. 苹果,你拿什么勇气来跟 Android 比?
  10. 数据结构上机实践第八周项目9-广义表算法库及应用
  11. Android Theme主题继承(SDK下主题和v7包下主题)
  12. Protel99se常用快捷键
  13. STM32入门开发: LWIP网络协议栈移植(网卡采用DM9000)
  14. el-table实现动态表格插入行(开发小记)
  15. win10系统迁移至SSD
  16. 中国移动云mas短信http协议对接
  17. 故障诊断——奇异值分解法hankel矩阵
  18. JR/T 0223—2021 金融数据安全 数据生命周期安全规范
  19. java调用第三方天气预报API接口
  20. Web全栈~31.并发

热门文章

  1. 我在德国做SAP CRM One Order redesign工作的心得
  2. 如何使用SAP CRM增强工具AET创建Table表格类型的增强
  3. Tecplot 360 按教程安装完毕后,弹出“Is your Tecplot 360 EX liense valid?”【终极解决办法】
  4. 目前最厉害的象棋软件_qq什么引流方式最厉害,QQ引流目前最有效的方法
  5. c++ list 修改_ggplot2 修改图例的一些操作
  6. python编译成exe有意义吗_python工程编译成EXE
  7. 公众号 采集 java_Java实现公众号数据的抓取
  8. access2003安装包百度云_阿里云服务器安装JDK与配置环境详细步骤
  9. api与密度转换公式_API重度和密度换算公式
  10. linux下的系统监控软件,Linux系统监控工具sysstat