Python 代码阅读(第 7 篇):列表分组计数
本篇阅读的代码实现了使用分组函数对列表进行分组,并计算每组的元素个数的功能。
本篇阅读的代码片段来自于30-seconds-of-python。
count_by
复制代码
count_by
根据给定的函数对列表中的元素进行分组,并返回每组中元素的数量。该使用 map()使用给定函数映射给定列表的值。在映射上迭代,并在每次出现时增加元素数。
该函数使用not in
判断目前字典中是否含有指定的key
,如果不含有,就将该key
加入字典,并将对应的value
设置为1
;如果含有,就将value
加1
。
使用字典推导式
在** Python 代码阅读:根据给定的函数对列表中的元素进行分组**中使用了字典推导式,将列表进行了分组。这里也可以使用同样的方式,在分组之后直接获取列表长度。不过这种写法遍历了两次列表,会使程序效率变低。
复制代码
使用collections.defaultdict
简化代码
复制代码
collections.defaultdict
包含一个default_factory
属性,可以用来快速构造指定样式的字典。
当使用int
作为default_factory
,可以使defaultdict
用于计数。因此可以直接使用它来简化代码。相比字典推导式的方法,只需要对列表进行一次循环即可。
复制代码
当使用 list
作为 default_factory
时,很轻松地将(键-值对组成的)序列转换为(键-列表组成的)字典。因此我们也可以据此改写** Python 代码阅读:根据给定的函数对列表中的元素进行分组**中的实现方式,提高效率。
复制代码
版权声明: 本文为 InfoQ 作者【Félix】的原创文章。
原文链接:【http://xie.infoq.cn/article/dc969c607a67dc6b1b0b27648】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论