Python代码然后实现列表分组计数

技术Python代码然后实现列表分组计数本篇文章给大家分享的是有关Python代码然后实现列表分组计数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. c

本文是关于Python代码,然后实现列表分组计数。边肖觉得很实用,就分享给大家学习一下。希望你看完这篇文章能有所收获。让我们和边肖一起看看。

1. count_by

defcount_by(arr,fn=lambdax:x):

密钥={}

forlinmap(fn,arr):

key[El]=1 felnotinkyelsekey[El]1

returnkey

#示例

来自mathimportfloor

count_by([6.1,4.2,6.3],floor)#{6:2,4:1}

Count _ by (['一','二','三'],len) # {3:2,533601} Count _ by根据给定的函数对列表中的元素进行分组,并返回每个组中的元素数。使用此映射()将给定列表的值与给定函数进行映射。迭代映射,并增加每次出现的元素数量。

该函数使用not in判断当前字典中是否包含指定的关键字,如果不包含,则将该关键字添加到字典中,并将相应的值设置为1;如果是的话,给这个值加1。

00-1010字典派生的形式为{key _ expr:Value _ expr用于集合if条件中的值}。group_by函数中字典派生的value_expr是一个列表,它是使用列表派生生成的。也就是

{ key _ expr :[xforxincollection 2 if条件2] forvalueincollection1 if条件1}同时我们可以看到,根据group_by代码中的字典推导,可能会计算出具有相同键的项,而根据Pyrhon中字典类型的规则,如果键相同,则只保留最新的键值对。实际上,当键相同时,值也相同。[El for El in lst if fn(El)=key]在派生的for语句中只有一个变量key。

d={ '一' :1,'二' :2,'三' :3,'二' :2}

d

{ '一' :1,'二' :2,'三' :3}

d={ '一' :1,'二' :2,'三' :3,'二' :22}

d

{ '一' :1,'二' :22,'三' :3}

这里,分组后可以直接用同样的方法获取列表长度。但是,这种方法已经遍历了列表两次,这将使程序效率低下。

defcount_by(lst,fn):

返回{ key : len([elf orelinstiffn(El)==key])Forkeyinmap(fn,lst)}

2. 使用字典推导式

类集合。Defaultdict ([default_factory [,])收藏。Defaultdict包含一个default _ factory属性,可以用来快速构造规范。

当int用作default_factory时,defaultdict可以用于计数。所以你可以直接用它来简化代码。与字典推导法相比,只需要循环一次列表。

from collectionimport defaultdict

defcount_by(lst,fn):

d=defaultdict(int)

前级入口:

d[fn(el)]=1

Returnd当使用列表作为default_factory时,很容易将序列(由键-值对组成)转换为字典(由键-列表对组成)。

defgroup_by(lst,fn):

d=defaultdict(列表)

前级入口:

d[fn(el)]。追加(el)

返回d

#示例

来自mathimportfloor

group_by([6.1,4.2,6.3],floor)#{4:[4.2],6:[6.1,6.3]}

Group _ by (['一','二','三'],len) # {3: ['一','二'],5: ['三']}以上都是Python代码,然后实现列表分组计数。边肖认为,一些知识点可能会在我们的日常工作中看到或使用。我希望你能通过这篇文章学到更多的知识。更多详情请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/84022.html

(0)

相关推荐

  • 如何转置RDD或MLLib矩阵

    技术如何将RDD或者MLLib矩阵进行转置操作如何将RDD或者MLLib矩阵进行转置操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如何将

    攻略 2021年12月21日
  • 24 二级视图

    技术24 二级视图 24 二级视图和一级视图相比:GenericAPIView来自 :from rest_framework.generics import GenericAPIView新增:字段:  

    礼包 2021年11月4日
  • 怎么设置vivado中ip核的位置(vivado怎么打开查看端口的窗口)

    技术Vivado中IP是如何控制端口的可见与不可见Vivado中IP是如何控制端口的可见与不可见,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。测试平台Viv

    攻略 2021年12月22日
  • 租用香港服务器的优点香港服务器

    技术租用香港服务器的优点香港服务器对于一些网站所有者来说,虽然云服务器和VPS能够提供更为廉价的租用方案但是如果要求性能和数据的私密性很多用户还是会选择将网站或者数据部署在物理服务器上。以很多海外站长最经常使用的香港服务

    礼包 2021年10月22日
  • SQL调优怎么生成海量测试数据

    技术SQL调优怎么生成海量测试数据小编给大家分享一下SQL调优怎么生成海量测试数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!场景,如果出现

    攻略 2021年11月23日
  • 实用的MySQL常用优化方法有哪些

    技术实用的MySQL常用优化方法有哪些本篇内容主要讲解“实用的MySQL常用优化方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“实用的MySQL常用优化方法有哪些”吧

    攻略 2021年10月22日