持续创作,加速成长!这是我参与「掘金日新计划 · 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中的小技巧,希望对您有用。