人生苦短,快学Python!

关于Python字典,算是Python中相当重要的数据类型了。在你学会基础知识后,字典这个概念,将会伴随着你后面的学习和工作。

因此,这里有几个相当重要的知识点,大家有必要知道。

字典是否是无序的

关于这个概念,很多朋友不一定清楚。

在 Python 2.7 中,字典是无序结构。字典项目的顺序是混乱的。这意味着项目的顺序是确定性和可重复的。

>>> # Python 2.7
>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}

在 Python 3.5 中,字典仍然是无序的,但这次是随机的数据结构。这意味着每次重新运行字典时,您都会得到不同的项目顺序。

>>> # Python 3.5
>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}

在 Python 3.6 及更高版本中,字典是有序的数据结构,这意味着它们保持元素的顺序与它们被引入时的顺序相同。

>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}

键值互换

假设您有一本字典,由于某种原因需要将键转换为值,值转换为键,应该怎么做呢?

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {}
>>> for key, value in a_dict.items():
...     new_dict[value] = key
...
>>> new_dict
{1: 'one', 2: 'two', 3: 'thee', 4: 'four'}

依据某种条件,过滤字典

有时候,你需要根据某种条件来过滤字典。那么配合if条件语句,是一个很好的选择。

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {}  # Create a new empty dictionary
>>> for key, value in a_dict.items():
...     if value <= 2:
...         new_dict[key] = value
...
>>> new_dict
{'one': 1, 'two': 2}

利用字典中的值,做一些计算

在Python中遍历字典时。需要进行一些计算也是很常见的。假设您已将公司销售额的数据存储在字典中,现在您想知道一年的总收入。

>>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> total_income = 0.00
>>> for value in incomes.values():
...     total_income += value  # Accumulate the values in total_income
...
>>> total_income
14100.0

字典推导式

字典推导式,是一个和列表推导式一样,具有很强大功能的知识点。因此,大家一定要掌握。

例如,假设您有两个数据列表,您需要根据它们创建一个新字典。

>>> objects = ['blue', 'apple', 'dog']
>>> categories = ['color', 'fruit', 'pet']
>>> a_dict = {key: value for key, value in zip(categories, objects)}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}

利用字典推导式,实现键值转换

你会发现,使用字典推导式,是一个更简单、高效的操作。

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {value: key for key, value in a_dict.items()}
>>> new_dict
{1: 'one', 2: 'two', 3: 'thee', 4: 'four'}

利用字典推导式,过滤字典

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {k: v for k, v in a_dict.items() if v <= 2}
>>> new_dict
{'one': 1, 'two': 2}

利用字典推导式,做一些计算

>>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> total_income = sum([value for value in incomes.values()])
>>> total_income
14100.0

字典排序

从 Python 3.6 开始,字典是有序的数据结构,因此如果您使用 Python 3.6(及更高版本),您将能够通过使用sorted()并借助字典理解对任何字典的键,进行排序。

>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> sorted_income = {k: incomes[k] for k in sorted(incomes)}
>>> sorted_income
{'apple': 5600.0, 'banana': 5000.0, 'orange': 3500.0}

内置函数,与字典配合使用

Python 提供了一些内置函数,这些函数在您处理集合(如字典)时可能会很有用。

map()函数

假设您有一个包含一堆产品价格的字典,并且您需要对它们应用折扣。

>>> prices = {'apple': 0.40, 'orange': 0.35, 'banana': 0.25}
>>> def discount(current_price):
...     return (current_price[0], round(current_price[1] * 0.95, 2))
...
>>> new_prices = dict(map(discount, prices.items()))
>>> new_prices
{'apple': 0.38, 'orange': 0.33, 'banana': 0.24}

filter()函数

假设您想知道单价低于0.40的产品。

>>> prices = {'apple': 0.40, 'orange': 0.35, 'banana': 0.25}
>>> def has_low_price(price):
...     return prices[price] < 0.4
...
>>> low_price = list(filter(has_low_price, prices.keys()))
>>> low_price
['orange', 'banana']

字典解包运算符

这是很多人不清楚的概念,Python 3.5 带来了一个有趣的新特性,因此大家需要着重学习。

您可以使用字典解包运算符 ( **) 将两个字典合并为一个新字典。

>>> vegetable_prices = {'pepper': 0.20, 'onion': 0.55}
>>> fruit_prices = {'apple': 0.40, 'orange': 0.35, 'pepper': .25}
>>> {**vegetable_prices, **fruit_prices}
{'pepper': 0.25, 'onion': 0.55, 'apple': 0.4, 'orange': 0.35}

如果您尝试合并的字典,具有重复或公共键,则最右侧字典的值将补充上。

E N D

各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)

推荐阅读

牛逼!Python常用数据类型的基本操作(长文系列第①篇)

牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

牛逼!Python函数和文件操作(长文系列第③篇)

牛逼!Python错误、异常和模块(长文系列第④篇)

11个好用到起飞的「Python字典」知识点!相关推荐

  1. 史上最全!56个JavaScript的「手写」知识点,扫盲啦!

    关注公众号 前端开发博客,领27本电子书 回复加群,自助秒进前端群 今天就带着大家来复习一下JavaScript的56个「手写」知识点哦~~~ 大厂手写题 1.实现原生 AJAX 封装 const a ...

  2. python编程a的x次方_「Python 面试」第四次更新

    阅读本文大约需要 5 分钟. 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁,该锁使得 Python 的多线程在处理 CPU 计算密集型 ...

  3. mysql数据字典生成器_「python技术」列表推导、生成器表达式和字典推导的差异及其示例

    #开往春天新创作大赛# 前言 列表推导式构建列表的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.自python2.7以后,列表推导和生成器表达式的概念就应用到了字典上,所以就有了字典推导, ...

  4. python闹钟界面程序_「Python编程」自由管理时间之编写一个小闹钟起床

    Python_时间管理 代码中的时间时间戳(Timestamp):1473525444 时间字符串(Format String):2015-02-14 11:25:11 结构化时间:(struct_t ...

  5. 「Python 编程」编码实现网络请求库中的 URL 解析器

    相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSockets 库.这里回顾一下它们的基本用法,例如使用 Requests 库向目标网站发出 GET 请求: impo ...

  6. python实习内容过程_「Python实践」学习之路

    一.列表内容对比 方式一: import operator l1 = ['a','b','c'] l2 = ['a','d','e'] print(operator.lt(l1,l2)) 运行结果为T ...

  7. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  8. 「Python ​正则」使用专题总结

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨zhenguo 来源丨Python与算法社区 ...

  9. python画图包_「Python量化」股票分析入门

    目前,获取股票数据的渠道有很多,而且基本上是免费的,比如,行情软件有同花顺.东方财富等,门户网站有新浪财经.腾讯财经.和讯网等.Python也有不少免费的开源api可以获取交易行情数据,如pandas ...

最新文章

  1. 群体结构分析软件Structure使用步骤
  2. 企业想独立完成网站建设也不是不可以
  3. Ocelot简易教程(二)之快速开始1
  4. Linux命令:find命令详解
  5. 坏掉的项链(洛谷P1203题题解,C++语言描述)
  6. centos运行python程序_CentOS 7定时执行python脚本
  7. “头脑王者”爆红被封,微信小程序迎来蛮荒期
  8. mysql引擎innodb与ndb比较_mysql存储引擎InnoDB 1.1、NDB 7.5对比
  9. Dynamic Multipoint ***(DM***)
  10. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件...
  11. 自己动手写一个小型的TCP/IP协议
  12. 免费快速提升网站流量之方法大结合(转摘有修改)
  13. 在HTML中 怎么一张图片上在放一张图片,css sprites把很多小图集成在一张图片上...
  14. 如何打造数据化决策管理
  15. 论架构师的自我修养--8荣
  16. Java多线程编程(四)——死锁问题
  17. GoF设计模式——状态模式(C++实现)
  18. Java程序优雅关闭的两种方法(程序停止前做一些善后工作)
  19. SONY的IMX500浅谈
  20. 网红达人培养思维导图

热门文章

  1. C#发送邮件的实现实例解析
  2. [pytorch] 通过一个例子分析torch.matmul矩阵与向量相乘的维度
  3. php7安装kafka扩展(已经测试)
  4. Bug之Yii继承类的
  5. centos php配置mysql数据库_CentOS+Nginx+PHP+MySQL详细配置(图解)
  6. 成电计算机学院保研率,985一条街的街友们,我就想问问电子科技大学(成电)到底是什么水平的学校啊!...
  7. html quot代替src,html特效代码大全
  8. c语言330转化成字符,c/字符串,字符转数字,数字转字符(转)
  9. 解决centos6.5出现-bash: mysql: command not found的方法
  10. html 表格_UiPath之发送正文包含表格的邮件(通过Html实现表格)