iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 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://www.lsjlt.com/news/157074.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 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中的数组转换为列表,可以使用Python内置的list()函数。该函数可以将序列类型的数据转换为列表。以下是一个示例...
    99+
    2023-10-23
    python
  • WPF实现列表分页控件的示例代码
    WPF 之列表分页控件 框架使用大于等于.NET40。 Visual Studio 2022。 项目使用 MIT 开源许可协议。 新建Pagination自定义控...
    99+
    2022-11-13
    WPF列表分页控件 WPF列表分页 WPF 分页控件
  • Python之列表append()方法使用实例代码分析
    这篇文章主要介绍“Python之列表append()方法使用实例代码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python之列表append()方法使用实例代码分析”文章能帮助大家解决问题。...
    99+
    2023-07-04
  • python中pandas对多列进行分组统计的实现
    使用groupby([ ]).size()统计的结果,值相同的字段值会不显示 如上图所示,第一个空着的行是982499 7 3388 1,因为此行与前面一行的这两个字段值是一样...
    99+
    2024-04-02
  • php有序列表或数组中删除指定的值的实现代码
    实现:删除给定的值之后,得到一个新的有序列表,长度-1 代码: <?php namespace php; class ListArray { // 从...
    99+
    2024-04-02
  • golang实现数组分割的示例代码
    需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。 示例1: 数组:[1, 2, 3, 4, 5, 6, 7,...
    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
  • python如何实现列表元素排列组合
    这篇文章主要为大家展示了“python如何实现列表元素排列组合”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何实现列表元素排列组合”这篇文章吧。列...
    99+
    2024-04-02
  • Python代码实现双链表
    本文实例为大家分享了Python代码实现双链表的具体代码,供大家参考,具体内容如下 双链表的每个节点有两个指针: 一个指向后一个节点,另一个指向前一个节点 class Node(ob...
    99+
    2024-04-02
  • python列表和元组使用实例分析
    这篇文章主要讲解了“python列表和元组使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python列表和元组使用实例分析”吧!前言在我们实际开发中,经常需要将一组数据存储起来,...
    99+
    2023-06-29
  • Python 列表 list 数组 ar
    Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。 创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list ...
    99+
    2023-01-31
    数组 列表 Python
  • angularJS实现表格部分列展开缩起示例代码
    AngularJS 简介 AngularJS 是一个 JavaScript 框架。它可通过 <script> 标签添加到 HTML 页面。 AngularJS 通过 指...
    99+
    2024-04-02
  • python实现合并两个有序列表的示例代码
    题目描述 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 LeetCode原题地址:https://leetcode-cn.com/pr...
    99+
    2024-04-02
  • Python代码实现找到列表中的奇偶异常项
    目录1.find_parity_outliers2.class collections.Counter([iterable-or-mapping])本篇阅读的代码片段来自于30-se...
    99+
    2024-04-02
  • Python快速实现分列转到行的示例代码
    之前看到Amily的一篇文章,用Excel快速实现分列转到行的操做。 数据源大致是这样的: 基于此,我动起了一个念头:看看如何用Python快速实现这个操作。 数据源已经构造好,咱...
    99+
    2023-05-13
    Python实现分列转行 Python分列转行 Python 分列
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作