这三个Python小技巧你要知道
我们知道,字典的本质是哈希表,本身是无法排序的,但 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小技巧你要知道相关推荐
- 惊了惊了,三分钟学会七个Python小技巧(建议收藏)
前言 有很多小可爱再入门的路上越走越远......这次分享一下简单的小技巧重新让你爱上Python啦. Python的小技巧很多,入门容易精通难!在进阶的路上,有没有什么好的技巧和好的方法,就 是不断 ...
- 收藏喜+1!值得使用的100个Python小技巧
目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...
- 快收藏!整理了 100 个 Python 小技巧
作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...
- python hist函数_虎哥的python小技巧放送之绘制统计图(2)
先放出第一期让大家回顾一下上次的内容 虎哥的python小技巧放送之绘制统计图(1) 第一期主要给大家讲了一些图形设置的东西.这一次开始正式带大家画图~ 折线图:折线图可以通过matplotlib中的 ...
- 3分钟学会python_3分钟学会一个Python小技巧
Python时间日期转换在开发中是非常高频的一个操作,你经常会遇到需要将字符串转换成 datetime 或者是反过来将 datetime 转换成字符串. datetime 分别提供了两个方法 strp ...
- 一些你可能不知道的 Python 小技巧!
[CSDN 编者按]Python 风头正盛,未来一段时间内想必也会是热门编程语言之一.因此,熟练掌握 Python 对开发者来说极其重要,说不定能给作为开发者的你带来意想不到的财富. 作者 | Seb ...
- 不藏了!分享100个Python小技巧!!
目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...
- 100个Python小技巧!帮你节省很多头发
目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手.你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等. ...
- 整理了100个Python小技巧(超级实用)
目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手.你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等. ...
最新文章
- java B2B2C源码电子商务平台 -commonservice-config配置服务搭建
- python使用matplotlib可视化、使用英文单次或者缩写指定使用的颜色、使用16进制的RGB字符串指定颜色、使用RGB或者RGBA数字元组指定颜色
- python安装虚拟环境没有activate_Python venv虚拟环境:Activate命令的作用
- ASP.NET中连接Sqlserver数据库时提示:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc
- 测试linux硬盘读写速度
- 生活中有哪些越早明白越好的道理
- Uploadify 控件上传图片 + 预览
- Symbols andSymbol Tables
- VMware Fusion Player 个人免费版
- 解除excel打开密码
- 找不到Break键怎么Quit / 退出服务CTRL-BREAK怎么输入啊?/ 笔记本键盘上没有break键
- linux离线安装nettools,CentOS最小安装之安装net-tools并配置网络
- python在煤矿的用途-息烽高校邦数据科学通识课【Python爬虫】答案
- (文献研读)ContainerCloudSim:云数据中心中容器建模和仿真的环境
- 01-JavaScript基础.md
- 计算机科学未来十年就业问题,未来10年“最有前途”的3个专业,就业率90%以上,多数人不看好...
- 日本华人IT派遣那点事儿(2)
- 经典sql基本语句大全
- Python正则表达式【转】
- fl2440串口编程