我们知道,字典的本质是哈希表,本身是无法排序的,但 Python 3.6 之后,字典是可以按照插入的顺序进行遍历的,这就是有序字典,其中的原理,可以阅读为什么 Python3.6 之后字典是有序的。

今天分享 3 个 Python 编程小技巧,来看看你是否用过?

1、如何按照字典的值的大小进行排序

我们知道,字典的本质是哈希表,本身是无法排序的,但 Python 3.6 之后,字典是可以按照插入的顺序进行遍历的,这就是有序字典,其中的原理,可以阅读为什么 Python3.6 之后字典是有序的。

知道了这一点,就好办了,先把字典的键值对列表排序,然后重新插入新的字典,这样新字典就可以按照值的大小进行遍历输出。代码如下:

>>> xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}
>>> for k,v in xs.items():#遍历字典
...     print(k,v)
...
a 4
b 3
c 2
d 1
>>> new_order = sorted(xs.items(), key=lambda x: x[1]) #对字典的键值对列表排序 >>> new_xs = { k : v for k,v in new_order} #有序列表插入新的字典
>>> new_xs
{'d': 1, 'c': 2, 'b': 3, 'a': 4}
>>> for k,v in new_xs.items(): ##新字典的输出就是有序的
...     print(k,v)
...
d 1
c 2
b 3
a 4 

对列表的排序,你还可以使用如下方法:

>>> import operator
>>> sorted(xs.items(), key=operator.itemgetter(1))
[('d', 1), ('c', 2), ('b', 3), ('a', 4)] 

2、优雅的一次性判断多个条件

假如有三个条件,只要有一个为真就可以通过,也许你会这么写:

x, y, z = 0, 1, 0 if x == 1 or y == 1 or z == 1: print('passed') 

实际上,以下三种方法更加 Pythonic

if 1 in (x, y, z): print('passed') if x or y or z: print('passed') if any((x, y, z)): print('passed') 

最后一个用到了 Python 内置的方法 any(),any 接受一个可迭代对象作为参数,比如列表或元组,只要其中一个为真,则 any() 方法返回真,用法示例如下:

>>> any(['a',(2,4),3,True])
True
>>> any(['a',(2,4),3,False])
True
>>> any(['a',(),3,False])
True
>>> any(['',(),0,False])
False
>>> any(('a',(),3,False))
True
>>> any(('',(),0,False))
False
## 注意空的可迭代对象返回 False
>>> any(())
False
>>> any([])
False
>>> any('')
False
>>> any({})
False 

与 any() 对应的,就是方法 all(),只有全部为真,才为真,注意空的可迭代对象一直返回真。

>>> all(['a',(2,4),1,True]) //list都为"真"
True
>>> all(['a',(),1,True])   //list元素中有空tuple
False
>>> all(['a',(2,4),0,True])
False
>>> all(['a',(2,4),3,False])
False ## 注意空的可迭代对象返回 True
>>>all([])
True
>>> all(())
True
>>> all({})
True
>>> all('')
True 

查看帮助文档,可以在解释器输入 help:

>>> help(all)
Help on built-in function all in module __builtin__: all(...) all(iterable) -> bool Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True. 

3、如何优雅的合并两个字典

** 操作符可以解包字典,这在合并字典时非常有用,比如:

>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 3, 'c': 4} >>> z = {**x, **y} >>> z
{'c': 4, 'a': 1, 'b': 3} 

如果在 Python2.x 中,需要这么做:

>>> z = dict(x, **y)
>>> z
{'a': 1, 'c': 4, 'b': 3} 

这三个Python小技巧你要知道相关推荐

  1. 惊了惊了,三分钟学会七个Python小技巧(建议收藏)

    前言 有很多小可爱再入门的路上越走越远......这次分享一下简单的小技巧重新让你爱上Python啦. Python的小技巧很多,入门容易精通难!在进阶的路上,有没有什么好的技巧和好的方法,就 是不断 ...

  2. 收藏喜+1!值得使用的100个Python小技巧

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  3. 快收藏!整理了 100 个 Python 小技巧

    作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...

  4. python hist函数_虎哥的python小技巧放送之绘制统计图(2)

    先放出第一期让大家回顾一下上次的内容 虎哥的python小技巧放送之绘制统计图(1) 第一期主要给大家讲了一些图形设置的东西.这一次开始正式带大家画图~ 折线图:折线图可以通过matplotlib中的 ...

  5. 3分钟学会python_3分钟学会一个Python小技巧

    Python时间日期转换在开发中是非常高频的一个操作,你经常会遇到需要将字符串转换成 datetime 或者是反过来将 datetime 转换成字符串. datetime 分别提供了两个方法 strp ...

  6. 一些你可能不知道的 Python 小技巧!

    [CSDN 编者按]Python 风头正盛,未来一段时间内想必也会是热门编程语言之一.因此,熟练掌握 Python 对开发者来说极其重要,说不定能给作为开发者的你带来意想不到的财富. 作者 | Seb ...

  7. 不藏了!分享100个Python小技巧!!

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  8. 100个Python小技巧!帮你节省很多头发

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手.你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等. ...

  9. 整理了100个Python小技巧(超级实用)

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手.你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等. ...

最新文章

  1. java B2B2C源码电子商务平台 -commonservice-config配置服务搭建
  2. python使用matplotlib可视化、使用英文单次或者缩写指定使用的颜色、使用16进制的RGB字符串指定颜色、使用RGB或者RGBA数字元组指定颜色
  3. python安装虚拟环境没有activate_Python venv虚拟环境:Activate命令的作用
  4. ASP.NET中连接Sqlserver数据库时提示:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc
  5. 测试linux硬盘读写速度
  6. 生活中有哪些越早明白越好的道理
  7. Uploadify 控件上传图片 + 预览
  8. Symbols andSymbol Tables
  9. VMware Fusion Player 个人免费版
  10. 解除excel打开密码
  11. 找不到Break键怎么Quit / 退出服务CTRL-BREAK怎么输入啊?/ 笔记本键盘上没有break键
  12. linux离线安装nettools,CentOS最小安装之安装net-tools并配置网络
  13. python在煤矿的用途-息烽高校邦数据科学通识课【Python爬虫】答案
  14. (文献研读)ContainerCloudSim:云数据中心中容器建模和仿真的环境
  15. 01-JavaScript基础.md
  16. 计算机科学未来十年就业问题,未来10年“最有前途”的3个专业,就业率90%以上,多数人不看好...
  17. 日本华人IT派遣那点事儿(2)
  18. 经典sql基本语句大全
  19. Python正则表达式【转】
  20. fl2440串口编程

热门文章

  1. 自动化所研究员:有的研究生在导师手底下过的不如狗,读研到底为了什么?...
  2. Python设计模式-职责链模式
  3. Flask之Cookie与Session
  4. NLTK包和语料库的准备
  5. 二值化算法OTSU源码解析
  6. 链表问题13——删除无序单链表中值重复出现的节点(方法二)
  7. asp.net core 创建允许跨域请求的api, cors.
  8. 利用adb命令查看apk文件包名的一些方法
  9. SQL 左外连接,右外连接,全连接,内连接
  10. linux 软件安装基本操作