文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

3个 Python 编程技巧

2024-04-02 19:55

关注

今天分享 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} 

以上就是3个 Python 编程技巧的详细内容,更多关于Python 编程技巧的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯