返回顶部
首页 > 资讯 > 后端开发 > Python >Python代码实现列表分组计数
  • 327
分享到

Python代码实现列表分组计数

2024-04-02 19:04:59 327人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1. count_by2. 使用字典推导式3. 使用collections.defaultdict简化代码 本篇阅读的代码片段来自于30-seconds-of-python。 1

本篇阅读的代码片段来自于30-seconds-of-python

1. count_by


def count_by(arr, fn=lambda x: x):
  key = {}
  for el in map(fn, arr):
    key[el] = 1 if el not in key else key[el] + 1
  return key

# EXAMPLES
from math import floor
count_by([6.1, 4.2, 6.3], floor) # {6: 2, 4: 1}
count_by(['one', 'two', 'three'], len) # {3: 2, 5: 1}


count_by根据给定的函数对列表中的元素进行分组,并返回每组中元素的数量。该使用map()使用给定函数映射给定列表的值。在映射上迭代,并在每次出现时增加元素数。

该函数使用not in判断目前字典中是否含有指定的key,如果不含有,就将该key加入字典,并将对应的value设置为1;如果含有,就将value加1。

2. 使用字典推导式

字典推导式有{ key_expr: value_expr for value in collection if condition }这样的形式。group_by函数中字典推导式的value_expr是一个列表,该列表使用了列表推导式来生成。即


{ key_expr: [x for x in collection2 if condition2] for value in collection1 if condition1 }


同时,我们可以看到根据group_by代码中的字典推导式,可能计算出key相同的项,根据Pyrhon中字典的类型的规则,key相同的,只保留最新的key-value对。实际上当key相同时,value值也一样。[el for el in lst if fn(el) == key]推导式的for语句中只有key一个变量。


>>> d = {'one': 1, 'two': 2, 'three': 3, 'two': 2}
>>> d
{'one': 1, 'two': 2, 'three': 3}
>>> d = {'one': 1, 'two': 2, 'three': 3, 'two': 22}
>>> d
{'one': 1, 'two': 22, 'three': 3}
>>>

这里也可以使用同样的方式,在分组之后直接获取列表长度。不过这种写法遍历了两次列表,会使程序效率变低。


def count_by(lst, fn):
  return {key : len([el for el in lst if fn(el) == key]) for key in map(fn, lst)}

3. 使用collections.defaultdict简化代码


class collections.defaultdict([default_factory[, ...]])


collections.defaultdict包含一个default_factory属性,可以用来快速构造指定样式的字典。

当使用int作为default_factory,可以使defaultdict用于计数。因此可以直接使用它来简化代码。相比字典推导式的方法,只需要对列表进行一次循环即可。


 from collections import defaultdict

def count_by(lst, fn):
  d = defaultdict(int)
  for el in lst:
    d[fn(el)] += 1
  return d


当使用 list 作为 default_factory时,很轻松地将(键-值对组成的)序列转换为(键-列表组成的)字典。


def group_by(lst, fn):
  d = defaultdict(list)
  for el in lst:
    d[fn(el)].append(el)
  return d

# EXAMPLES
from math import floor
group_by([6.1, 4.2, 6.3], floor) # {4: [4.2], 6: [6.1, 6.3]}
group_by(['one', 'two', 'three'], len) # {3: ['one', 'two'], 5: ['three']}

到此这篇关于Python代码实现列表分组计数的文章就介绍到这了,更多相关Python列表分组计数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python代码实现列表分组计数

本文链接: https://lsjlt.com/news/157074.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python代码实现列表分组计数
    目录1. count_by2. 使用字典推导式3. 使用collections.defaultdict简化代码 本篇阅读的代码片段来自于30-seconds-of-python。 1...
    99+
    2024-04-02
  • Python代码然后实现列表分组计数
    本篇文章给大家分享的是有关Python代码然后实现列表分组计数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. count_bydef count_by(arr,&...
    99+
    2023-06-25
  • Python 代码实现列表的最小公倍数
    目录1. lcm2. functools.reduce3. 实际使用本篇阅读的代码片段来自于30-seconds-of-python(https://github.com/30-se...
    99+
    2024-04-02
  • python如何实现列表组合和列表元素替代组合
    小编给大家分享一下python如何实现列表组合和列表元素替代组合,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!列表组合和列表元素替代组合>>> for ...
    99+
    2024-04-02
  • python如何实现分组相邻列表
    小编给大家分享一下python如何实现分组相邻列表,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!分组相邻列表在for循环中,对相邻循环进行分组当然很容易,特别是使用zip(),但这肯定不是最好的方法。为了更轻松便捷地实现这...
    99+
    2023-06-27
  • python 的列表遍历删除实现代码
    python的列表list可以用for循环进行遍历,实际开发中发现一个问题,就是遍历的时候删除会出错,例如 l = [1,2,3,4] for i in l: if i != 4: l.remove...
    99+
    2022-06-04
    遍历 代码 列表
  • python数组转换为列表怎么实现
    要将Python中的数组转换为列表,可以使用Python内置的list()函数。该函数可以将序列类型的数据转换为列表。以下是一个示例...
    99+
    2023-10-23
    python
  • Android列表实现(1)_数组列表实例介绍
    最近开始学习android的ui,先上几个相关的例子,后续还会有更新。 代码如下:import android.app.ListActivity; import androi...
    99+
    2022-06-06
    数组 Android
  • WPF实现列表分页控件的示例代码
    WPF 之列表分页控件 框架使用大于等于.NET40。 Visual Studio 2022。 项目使用 MIT 开源许可协议。 新建Pagination自定义控...
    99+
    2022-11-13
    WPF列表分页控件 WPF列表分页 WPF 分页控件
  • Python数据结构之栈、队列的实现代码分享
    1. 栈 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放...
    99+
    2022-06-04
    数据结构 队列 代码
  • Python之列表append()方法使用实例代码分析
    这篇文章主要介绍“Python之列表append()方法使用实例代码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python之列表append()方法使用实例代码分析”文章能帮助大家解决问题。...
    99+
    2023-07-04
  • android二级listview列表实现代码
    今天来实现以下大众点评客户端的横向listview二级列表,先看一下样式。  这种横向的listview二级列表在手机软件上还不太常见,但是使用过平板的都应该知道,在...
    99+
    2022-06-06
    listview Android
  • python中pandas对多列进行分组统计的实现
    使用groupby([ ]).size()统计的结果,值相同的字段值会不显示 如上图所示,第一个空着的行是982499 7 3388 1,因为此行与前面一行的这两个字段值是一样...
    99+
    2024-04-02
  • Python实现代码统计(代码+注释+空
    # -*- coding: utf-8 -*- """ Created on Thu Apr 17 17:15:40 2014 @author: author """ import os; path_head = '代码路径头部' path...
    99+
    2023-01-31
    代码 注释 Python
  • golang实现数组分割的示例代码
    需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。 示例1: 数组:[1, 2, 3, 4, 5, 6, 7,...
    99+
    2024-04-02
  • php有序列表或数组中删除指定的值的实现代码
    实现:删除给定的值之后,得到一个新的有序列表,长度-1 代码: <?php namespace php; class ListArray { // 从...
    99+
    2024-04-02
  • Python 实现链表实例代码
    Python 实现链表实例代码 前言 算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的。 实现清单 实现链表,本质上和语言是无关的。但是灵活度却和实现它的语言密...
    99+
    2022-06-04
    实例 链表 代码
  • Python代码实现双链表
    本文实例为大家分享了Python代码实现双链表的具体代码,供大家参考,具体内容如下 双链表的每个节点有两个指针: 一个指向后一个节点,另一个指向前一个节点 class Node(ob...
    99+
    2024-04-02
  • python如何实现列表元素排列组合
    这篇文章主要为大家展示了“python如何实现列表元素排列组合”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何实现列表元素排列组合”这篇文章吧。列...
    99+
    2024-04-02
  • Python 列表 list 数组 ar
    Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。 创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list ...
    99+
    2023-01-31
    数组 列表 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作