我希望初学Python时就能知道的一些用法
admin
2023-07-31 01:43:22
0

有时候我反问我自己,怎么不知道在Python 3中用更简单的方式做“这样”的事,当我寻求答案时,随着时间的推移,我当然发现更简洁、有效并且bug更少的代码。总的来说(不仅仅是这篇文章),“那些”事情总共数量是超过我想象的,但这里是第一批不明显的特性,后来我寻求到了更有效的/简单的/可维护的代码。

字典

字典中的keys()和items()

你能在字典的keys和items中做很多有意思的操作,它们类似于集合(set):

12345678 aa = {mike: male, kathy: female, steve: male, hillary: female} bb = {mike: male, ben: male, hillary: female} aa.keys() & bb.keys() # {‘mike’, ‘hillary’} # these are set-likeaa.keys() bb.keys() # {‘kathy’, ‘steve’}# If you want to get the common key-value pairs in the two dictionariesaa.items() & bb.items() # {(‘mike’, ‘male’), (‘hillary’, ‘female’)}

太简洁啦!

在字典中校验一个key的存在

下面这段代码你写了多少遍了?

12345 dictionary = {}for k, v in ls:    if not k in dictionary:        dictionary[k] = []    dictionary[k].append(v)

这段代码其实没有那么糟糕,但是为什么你一直都需要用if语句呢?

1234 from collections import defaultdictdictionary = defaultdict(list) # defaults to listfor k, v in ls:    dictionary[k].append(v)

这样就更清晰了,没有一个多余而模糊的if语句。

用另一个字典来更新一个字典

1234567 from itertools import chaina = {x: 1, y:2, z:3}b = {y: 5, s: 10, x: 3, z: 6} # Update a with b c = dict(chain(a.items(), b.items()))c # {‘y’: 5, ‘s’: 10, ‘x’: 3, ‘z’: 6}

这样看起来还不错,但是不够简明。看看我们是否能做得更好:

12 c = a.copy()c.update(b)

更清晰而且更有可读性了!

从一个字典获得最大值

如果你想获取一个字典中的最大值,可能会像这样直接:

123 aa = {k: sum(range(k)) for k in range(10)}aa # {0: 0, 1: 0, 2: 1, 3: 3, 4: 6, 5: 10, 6: 15, 7: 21, 8: 28, 9: 36}max(aa.values()) #36

这么做是有效的,但是如果你需要key,那么你就需要在value的基础上再找到key。然而,我们可以用过zip来让展现更扁平化,并返回一个如下这样的key-value形式:

有时候我反问我自己,怎么不知道在Python 3中用更简单的方式做“这样”的事,当我寻求答案时,随着时间的推移,我当然发现更简洁、有效并且bug更少的代码。总的来说(不仅仅是这篇文章),“那些”事情总共数量是超过我想象的,但这里是第一批不明显的特性,后来我寻求到了更有效的/简单的/可维护的代码。

字典

字典中的keys()和items()

你能在字典的keys和items中做很多有意思的操作,它们类似于集合(set):

12345678 aa = {mike: male, kathy: female, steve: male, hillary: female} bb = {mike: male, ben: male, hillary: female} aa.keys() & bb.keys() # {‘mike’, ‘hillary’} # these are set-likeaa.keys() bb.keys() # {‘kathy’, ‘steve’}# If you want to get the common key-value pairs in the two dictionariesaa.items() & bb.items() # {(‘mike’, ‘male’), (‘hillary’, ‘female’)}

太简洁啦!

在字典中校验一个key的存在

下面这段代码你写了多少遍了?

12345 dictionary = {}for k, v in ls:    if not k in dictionary:        dictionary[k] = []    dictionary[k].append(v)

这段代码其实没有那么糟糕,但是为什么你一直都需要用if语句呢?

1234 from collections import defaultdictdictionary = defaultdict(list) # defaults to listfor k, v in ls:    dictionary[k].append(v)

这样就更清晰了,没有一个多余而模糊的if语句。

用另一个字典来更新一个字典

1234567 from itertools import chaina = {x: 1, y:2, z:3}b = {y: 5, s: 10, x: 3, z: 6} # Update a with b c = dict(chain(a.items(), b.items()))c # {‘y’: 5, ‘s’: 10, ‘x’: 3, ‘z’: 6}

这样看起来还不错,但是不够简明。看看我们是否能做得更好:

12 c = a.copy()c.update(b)

更清晰而且更有可读性了!

从一个字典获得最大值

如果你想获取一个字典中的最大值,可能会像这样直接:

123 aa = {k: sum(range(k)) for k in range(10)}aa # {0: 0, 1: 0, 2: 1, 3: 3, 4: 6, 5: 10, 6: 15, 7: 21, 8: 28, 9: 36}max(aa.values()) #36

这么做是有效的,但是如果你需要key,那么你就需要在value的基础上再找到key。然而,我们可以用过zip来让展现更扁平化,并返回一个如下这样的key-value形式:

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...