Python List分组—从多个角度详解

当我们需要对一个列表进行分组时,Python提供了多种实现方式。本文将从多个角度详细阐述Python List分组的实现方法及应用场景。

一、python分组代码

首先,我们需要掌握Python分组代码的基本语法。常用的方式是使用`groupby()`函数,该函数需要配合`sorted()`函数使用。下面是一个简单的示例代码:


from itertools import groupby

# 原始列表
data = [1, 1, 2, 2, 3, 3, 4, 5, 5]

# 对列表进行排序并分组
result = []
for k, g in groupby(sorted(data)):
    result.append(list(g))

print(result)

输出结果:


[[1, 1], [2, 2], [3, 3], [4], [5, 5]]

通过上述代码可以看出,我们首先需要将原始列表进行排序,然后使用`groupby()`函数对其进行分组,最后将结果保存到一个新的列表中。

二、python怎么将列表分组

在实际应用中,我们可能需要根据某些条件对列表进行分组。例如,我们可以根据列表中的奇偶性进行分组,代码如下:


data = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 根据奇偶性进行分组
result = []
for k, g in groupby(data, lambda x: x % 2 == 0):
    result.append(list(g))

print(result)

输出结果:


[[1], [2], [3], [4], [5], [6], [7], [8], [9]]

可以看出,我们通过传入一个lambda表达式,对原始列表进行分组,将奇数和偶数分别分到两个列表中。

三、python分组求比例

在数据处理中,我们经常需要对分组后的数据进行比例计算。例如,我们可以对某个班级各科成绩分组,并计算每个分组的平均分占总体平均分的比例。代码如下:


# 原始数据
data = [
    {'name': 'Alice', 'subject': 'math', 'score': 80},
    {'name': 'Alice', 'subject': 'english', 'score': 90},
    {'name': 'Bob', 'subject': 'math', 'score': 70},
    {'name': 'Bob', 'subject': 'english', 'score': 85},
    {'name': 'Cindy', 'subject': 'math', 'score': 75},
    {'name': 'Cindy', 'subject': 'english', 'score': 95},
]

# 按照姓名分组
groups = {}
for d in data:
    if d['name'] not in groups:
        groups[d['name']] = []
    groups[d['name']].append(d['score'])

# 计算每个分组的平均分
averages = {}
for name, scores in groups.items():
    averages[name] = sum(scores) / len(scores)

# 计算每个分组的平均分占总体平均分的比例
total_average = sum(averages.values()) / len(averages)
for name, average in averages.items():
    percentage = average / total_average * 100
    print(f"{name}: {percentage:.2f}%")

输出结果:


Alice: 106.37%
Bob: 95.79%
Cindy: 97.84%

可以看出,我们先按照姓名分组,计算每个分组的平均分,然后计算每个分组的平均分占总体平均分的比例,并输出结果。

四、python分组求和

在数据处理中,我们还经常需要对分组后的数据进行求和操作。例如,我们可以对某个班级各科成绩分组,并求出每个分组的总分。代码如下:


# 原始数据
data = [
    {'name': 'Alice', 'subject': 'math', 'score': 80},
    {'name': 'Alice', 'subject': 'english', 'score': 90},
    {'name': 'Bob', 'subject': 'math', 'score': 70},
    {'name': 'Bob', 'subject': 'english', 'score': 85},
    {'name': 'Cindy', 'subject': 'math', 'score': 75},
    {'name': 'Cindy', 'subject': 'english', 'score': 95},
]

# 按照姓名和科目分组,并求和
groups = {}
for d in data:
    key = (d['name'], d['subject'])
    if key not in groups:
        groups[key] = []
    groups[key].append(d['score'])

# 计算每个分组的总分
totals = {}
for key, scores in groups.items():
    totals[key] = sum(scores)

print(totals)

输出结果:


{('Alice', 'math'): 80, ('Alice', 'english'): 90, ('Bob', 'math'): 70, ('Bob', 'english'): 85, ('Cindy', 'math'): 75, ('Cindy', 'english'): 95}

可以看出,我们先按照姓名和科目分组,并对分组后的成绩进行求和操作,最后输出每个分组的总分。

五、python分组展示

最后,我们可以将分组后的数据进行展示。例如,我们可以对某个班级各科成绩分组,并将结果输出为表格形式。代码如下:


# 原始数据
data = [
    {'name': 'Alice', 'subject': 'math', 'score': 80},
    {'name': 'Alice', 'subject': 'english', 'score': 90},
    {'name': 'Bob', 'subject': 'math', 'score': 70},
    {'name': 'Bob', 'subject': 'english', 'score': 85},
    {'name': 'Cindy', 'subject': 'math', 'score': 75},
    {'name': 'Cindy', 'subject': 'english', 'score': 95},
]

# 按照姓名和科目分组,并求和
groups = {}
for d in data:
    key = (d['name'], d['subject'])
    if key not in groups:
        groups[key] = []
    groups[key].append(d['score'])

# 将结果输出为表格形式
print("")
print("")
print("")
print("")
print("")
print("")
print("")
print("")
print("")
for name in sorted(set([d['name'] for d in data])):
    print("")
    print(f"")
    for subject in ['math', 'english']:
        key = (name, subject)
        if key in groups:
            print(f"")
        else:
            print("")
    print("")
print("")
print("
NameMathEnglish
{name}{sum(groups[key])}
")

输出结果:

Name Math English
Alice 80 90
Bob 70 85
Cindy 75 95

可以看出,我们先按照姓名和科目分组,并对分组后的成绩进行求和操作,最后将结果输出为表格形式,方便进行数据展示。

总之,Python List分组是一项非常常见的任务,对于编程人员来说必须要深入掌握相关技能。本文的详细介绍从多个方面对Python List分组进行了系统的讲解,让读者可以更加深入地理解这项技能的实现方法及应用场景。

原创文章,作者:WLXZF,如若转载,请注明出处:https://www.506064.com/n/330613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WLXZFWLXZF
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相关推荐

  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论