Python中使用字典的几个小技巧

1 解包

所谓解包,就是将字典通过 ** 操作符转为 Key=Value 的形式,这种形式可以直接传给函数作为关键字参数。 说说适用的几种情况。

1.1 搜索拼接条件

当应用中使用类似 SQLAlchemy 的 ORM 形式读取数据的时候,不同搜索条件,传入给 ORM 的搜索参数也随之改变。 下面是图书表的部分数据(只展示了部分字段)

搜索时,我们会以这样的形式执行查询方法

但是由于传入参数会根据搜索条件的变化而变化,无法直接写出有哪些参数,这个时候就可以使用字典解包

这样就 OK 了

1.2 方法参数太多,为代码美观使用

改成这样的话,美观一些

并且,在上述新增图书过程中,都会对提交的参数进行校验,而校验方法返回的结果(也就是 book_param 和其它信息)一般也都是字典,所以使用字典解包的方式更符合实际场景。

总之,适当使用字典解包对方法进行传参,可以让我们的代码更灵活。

2 setdefault() 的使用

先看下这个方法怎么使用

dict.setdefault(key, default=None)

如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。

很多时候我们需要对列表根据元素的某个 key 转化成一个包含列表的字典。比如,上面的数据中,我希望得到一个字典,字典的 key 是图书分类,value 是属于该分类的图书列表。我们通常会这样写

当然,这样写是正确的,能得到预期结果

但是如果使用字典的 setdefault() 方法话,可以少写几行代码,看起来也优雅一些

3 字典合并

常用的合并方式

有时我们碰到合并字典的情况也不少。比如,我们准备根据一本书的基本信息创建一本新书

当然,如果只是合并两个字典的话,也可以使用 update() 方法。 假设我们只需要合并 basebook 和 bookparam

这也可以工作,不过要注意,这样会修改 base_book 中的值。 如果只是单纯的更新某个字典的信息的话,update() 方法显然最合适。对于当前需求的话,还是第一种方式更合适。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180702G04NC700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券