天使爱美丽

“TA还未设置签名”

笔记

Python学习之defaultdict详解

已有 107 次阅读2018-04-10 17:27 |系统分类:前端优化 |

本文和大家分享的主要是pythondefaultdict的使用,dict很好理解,可是有一个使用起来不方便的地方在于,需要进行初始值是否初始化的判断,具体的下面将和大家详细介绍,希望对大家学习python有所帮助。

  list = ["aaa", "bbb", "ccc"]

  kv = {}for d in list:

  if kv[d.id]:

  kv[d.id] += 1

  else:

  kv[d.id] = 1

  对于python来说,这很不酷,所以,defaultdict这个东西就出现了,上面的代码,可以改为:

  from collections import defaultdict

  list = ["aaa", "bbb", "ccc"]

  kv = defaultdict(int)for d in list:

  kv[d.id] += 1

  也就是说,defaultdict能自动将没有创建的值,使用传入的函数来初始化,比如传入list,就能直接创建列表,使用的时候可以直接append

  除了这些基础用法,还有更加hack的用法,比如如下这个需求:

  为对象进行编号,如果某几个属性相同,那么编为同一组。

  这并不是一个多复杂的需求,只是用defaultdict来实现,会显得比其他方法优雅很多:

  from collections import defaultdict

  from itertools import count

  group_value = defaultdict(count().__next__)

  group_value_list = [group_value[(o.p1, o.p2, o.p3)] for o in object_list]

  使用了count的 next 方法,在往group_value设置值的时候,会自动生成一个值,当key相同的时候,值是相同的,当key不同的时候,自动将数字增加1,当做值,这样,就能生成一个分组的列表了。

  defaultdict增强了原dict的功能,并且如果创造力足够,会让程序更加优雅。

来源:网络


标签: 举报

收藏 0人收藏
给个赞0人点赞
评论
0 /300