常用Python技巧整理(一)

149 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

导语

Python是我平时学习工作中使用最频繁的语言,因此,在使用过程中经常有一些常遇到的问题,特此记录,以备后续查找。

python如何把字典键值翻转

在工作中,经常需要使用双向的字典查找对应。即不只需要 键到值的映射,还需要值到键的映射。比如,在做一些学术数据统计时,我们不仅需要paper到author的映射,也需要author到paper的映射以方便作者画像分析。

一个最简单的解决方法是通过直接使用字典推导,示例代码如下:

d = {1:'a', 2:'b', 3:'c'}
print(d)
rd = {v:k for k,v in d.items()}
print(rd)

执行后的结果展示如下:

{1: 'a', 2: 'b', 3: 'c'}
{'a': 1, 'b': 2, 'c': 3}

对列表中的元组元素按元组某字段排序

在进行一些数据库查询时,返回的结果一般是一些元祖类型。而这些元组的默认排序是按元组的第一个字段进行排序的,例如下面初始化了一个元组的列表,其中每一个元组都有两个字段,第一个字段是数字,第二个字段是字符。

我们默认进行排序打印输出

items = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
sorted(items)

得到的输出为:

[(0, 'B'), (0, 'a'), (1, 'A'), (1, 'B'), (2, 'A')]

如果我们想要按第二个字段进行排序,则可以设置按第二个字段进行排序为:

sorted(items,key=lambda x:(x[1]))

得到输出为:

[(1, 'A'), (2, 'A'), (1, 'B'), (0, 'B'), (0, 'a')]

defaultdict的使用

在Python编程中,经常会遇到这样的情形:为了保证代码的结构性,我们初始化一个字典,然后不断网字典中添加相应的”键值对“。

d = dict()

d["key"] = value

这里,我们一般是新建一个dict={}为空字典,在添加元素时,使用dict[”key“] =value然而,这样需要key提前在字典里,如果不在字典里就会报错。

这个问题python的开发者们早就为我们想到了,我们可以使用collections库中的defaultdict。defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值。

以下为代码示例

from collections import defaultdict

d1 = defaultdict(int)
d2 = defaultdict(set)
d3 = defaultdict(str)
d4 = defaultdict(list)
d1[2] ='two'

print(d1[1])
print(d2[1])
print(d3[1])
print(d4[1])

得到输出为:

0
set()

[]

可以看到,我们初始化了四个defaultdict,其中设置其默认值分别为整型(默认为0),集合(默认为空集合),字符串(默认为空字符串),列表(默认为空列表)。

通过使用defaultdict,可以大大简化代码结构,不必每次添加值时先判断该键是否存在,非常方便。

使用tqdm可视化你的循环

tqdm是python中一个用来可视化循环的库,他主要实现了python中的进度条的功能。我们可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。

例如,下面的代码展示了如何使用tqdm的方式,只需要在一个可迭代对象外套一个tqdm即可,这对于程序运行时间的估计非常重要,能够合理预估程序运行时间。

for i in tqdm(range(100)):
    func()

安装方式,直接使用pip install命令安装即可。

总结

本篇博客总结了几个python中的小技巧,希望对您有用。