首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何使用Python的itertools.groupby()?

我如何使用Python的itertools.groupby()?

提问于 2017-12-26 06:12:06
回答 1关注 0查看 1.9K

我一直无法找到如何真正使用Python的itertools.groupby()函数的可理解的解释。

我想要做的是:拿一个列表 - 在这种情况下,一个对象化的lxml元素的子元素根据一些条件将它们分成几组。

然后再分别遍历每个这些组。

我已经看过文档和示例,但是我试图将它们应用到一个简单的数字列表之外时遇到了麻烦。

那么,如何使用itertools.groupby()呢? 还有另一种技术我应该使用?

已邀请
等3人回答

回答 1

Bilibili科技

发布于 2017-12-26 06:25:18

你首先必须对数据进行排序。这个很重要。

示例结构

代码语言:txt
AI代码解释
复制
groups = []
代码语言:txt
AI代码解释
复制
uniquekeys = []
代码语言:txt
AI代码解释
复制
for k, g in groupby(data, keyfunc):
代码语言:txt
AI代码解释
复制
   groups.append(list(g))    # Store group iterator as a list
代码语言:txt
AI代码解释
复制
   uniquekeys.append(k)

k是当前分组键,g是一个迭代器,您可以使用该迭代器迭代该分组键所定义的组。换句话说,groupby迭代器本身返回迭代器。

下面是一个例子,使用更清晰的变量名称:

代码语言:txt
AI代码解释
复制
from itertools import groupby
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus")]
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
for key, group in groupby(things, lambda x: x[0]):
代码语言:txt
AI代码解释
复制
    for thing in group:
代码语言:txt
AI代码解释
复制
        print "A %s is a %s." % (thing[1], key)
代码语言:txt
AI代码解释
复制
    print " "

输出:

A bear is a animal.

A duck is a animal.

A cactus is a plant.

A speed boat is a vehicle.

A school bus is a vehicle.

在例子中,things是一个元组列表,其中每个元组中的第一个元素是第二个元素所属的组。 groupby()函数有两个参数:(1)要分组的数据;(2)分组函数。 这里,lambda x:x [0]告诉groupby()使用每个元组中的第一项作为grouping key。 在上面的语句中,groupby 返回三个(key,组迭代器)对 - 每个唯一键一次。 您可以使用返回的迭代器遍历该组中的每个单独的项目。

下面是另一个的例子:

代码语言:txt
AI代码解释
复制
for key, group in groupby(things, lambda x: x[0]):
代码语言:txt
AI代码解释
复制
    listOfThings = " and ".join([thing[1] for thing in group])
代码语言:txt
AI代码解释
复制
    print key + "s:  " + listOfThings + "."

输出:

animals: bear and duck.

plants: cactus.

vehicles: speed boat and school bus.

和开发者交流更多问题细节吧,去 写回答
相关文章
我是如何使用Python来自动化我的婚礼的
譯 文 ❈ 原作者:Thomas Curtis 译者:ictar Github:https://github.com/ictar ❈ 2016年9月3日,对世界上的大多数人来说,或许就只是普普通通的一天,但对我而言,将会是一个难忘的日子,因为在那一天,我结婚了。 在规划婚礼时,要考虑许多不同的方面。食物、装饰、桌子装置(啊,是哒,这独立于装饰)、鲜花、住宿、交通、娱乐和位置。虽然在规划婚礼时有许许多多未知数,但是我可以肯定一件事。在婚礼中,有大量的名单、嵌套的名单、以及更多的远到目光可见的名单。当我瞪着越
Python中文社区
2018/01/31
3.1K0
我是如何使用Python来自动化我的婚礼的
我是如何自学 Python 的
不少初学 Python 或者准备学习 Python 的小伙伴问我如何学习 Python。今天就说说我当时是怎么学习的。
李英杰同学
2019/12/30
1.3K0
我是如何自学 Python 的
不少初学 Python 或者准备学习 Python 的小伙伴问我如何学习 Python。今天就说说我当时是怎么学习的。
全栈程序员站长
2022/09/20
7780
我是如何自学 Python 的
我所使用的Python扩展程序 for
ActivePython-3.1.3.5-win32-x86.msi bzr-2.3.1.win32-py2.6.exe CherryPy-3.2.0-py2.win32.exe dreampie-1.1.1-setup.exe Genshi-0.6.win32.exe ipython-0.10.1.win32-setup.exe matplotlib-0.99.3.win32-py2.6.exe mod_python-3.2.5b.win32-py2.3.exe mod_python-3.2.5b.win32-py2.4.exe MySQL-python-1.2.2.win32-py2.6.exe numpy-1.5.1-win32-superpack-python2.6.exe PyQt-Py2.6-gpl-4.5.4-1.exe pysqlite-2.6.0.win32-py2.6.exe python-2.7.msi pywin32-216.win32-py2.6.exe scipy-0.8.0-win32-superpack-pytho.exe setuptools-0.6c11.win32-py2.6.exe svn-python-1.6.1.win32-py2.6.exe Twisted-11.0.0.winxp32-py2.7.msi numpy scipy Markdown-2.0.win32.exe aggdraw-1.2a3-20060212.win32-py2.6.exe Tkinter wxpython pythonwin java swing pygtk pyqt ---- highlight-setup-3.4.exe ------- Psyco Pyrex PyPy Weave NumPy ctypes Tkinter wxPython PythonWin Java Swing PyGTK PyQt Paycopg MySQLdb Pygame PyXML ReportLab RepltC
py3study
2020/01/15
7850
小白如何入门Python?记我的Python初体验
早已久仰 Python 大名 , 当下 Python 特别火爆 ,作为小白的我也想尝尝鲜,毕竟社会在发展,咱也要与时俱进呀 !
AXYZdong
2020/10/28
4380
我是如何理解并使用maven的
一直想写一篇关于Maven的文章,但是不知如何下笔,如果说能使用,会使用Maven的话,一到两个小时足矣,不需要搞懂各种概念。那么给大家来分享下我是如何理解并使用maven的。
软件测试君
2019/07/01
1.8K0
我是如何理解并使用maven的
我是如何学习Python语言?
我是一位数据工作者,经常会使用到各种软件和工具帮助我解决各种数据问题,比方说数据的抽取与解析,数据的加工与探索,数据的建模与展示等。我会使用Python语言来做一些事情,但感觉学习的不够系统,使用的也不够灵活。因此,我想增进和强化下自己的Python编程技能,让自己能够更好地使用Python语言以及Python的数据科学与人工智能生态来帮助我更有效地解决与数据相关的问题集。
陆勤_数据人网
2019/05/16
7920
我是如何学习Python语言?
python对list去重的各种方法
今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。
the5fire
2019/02/28
1K0
使用Python按另一个列表对子列表进行分组
在 Python 中,我们可以使用各种方法按另一个列表对子列表进行分组,例如使用字典和使用 itertools.groupby() 函数,使用嵌套列表推导。在分析大型数据集和数据分类时,按另一个列表对子列表进行分组非常有用。它还用于文本分析和自然语言处理。在本文中,我们将探讨在 Python 中按另一个列表对子列表进行分组的不同方法,并了解它们的实现。
很酷的站长
2023/08/11
1K0
使用Python按另一个列表对子列表进行分组
【译】Activity分割动画如何使用我的动画##
在切换不同Activity时,系统级过渡动画是作用于整个Activity的,而我想要实现的动画效果是将Activity A分割成两部分,然后将他们向外推开,最后呈现Activity B。gif图效果如下:
小鄧子
2018/08/20
1.6K0
【译】Activity分割动画如何使用我的动画##
一日一技:pandas 中,如何分组再取 N项?
在 pandas 中,DataFrame 是我们经常用到的工具。有时候,我们可能会需要对数据按某个字段进行分组,然后每个组取N项。例如:
青南
2020/12/16
6880
一日一技:pandas 中,如何分组再取 N项?
如何使用Python的filter函数
Python内置的filter()函数能够从可迭代对象(如字典、列表)中筛选某些元素,并生成一个新的迭代器。可迭代对象是一个可以被“遍历”的Python对象,也就是说,它将按顺序返回各元素,这样我们就可以在for循环中使用它。
老齐
2020/11/04
5.1K0
如何使用Python的filter函数
本文转自“老齐教室”,为你列举了filter()函数的不同使用方法。 介绍 Python内置的filter()函数能够从可迭代对象(如字典、列表)中筛选某些元素,并生成一个新的迭代器。可迭代对象是一个可以被“遍历”的Python对象,也就是说,它将按顺序返回各元素,这样我们就可以在for循环中使用它。 filter()函数的基本语法是: filter(function, iterable) 返回一个可迭代的filter对象,可以使用list()函数将其转化为列表,这个列表包含过滤器对象中返回的所有的项。 f
博文视点Broadview
2023/05/19
1.3K0
如何使用Python的filter函数
Python如何使用Matplotlib的作图
Matplotlib官网 如果想了解更多可查看官网。 import numpy as np import matplotlib.pyplot as plt %matplotlib inline #写了这个就可以不用写plt.show() plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 X = np.linspace(0, 2*np.pi,1
Python研究者
2020/09/28
1.5K0
Python如何使用Matplotlib的作图
如何使用Python中的帮助
本文介绍了如何利用Python自带的帮助文档和内嵌的帮助命令进行编程学习,强调了注意利用各种帮助资源的重要性。
雷大亨
2018/01/01
1.9K0
K哥我是如何自学Python的?真实经历~
其实Python是我的第二语言,有些读者可能已经知道了,因为以前公众号的名字叫JAVAandPython君。
Python进击者
2021/05/07
9030
K哥我是如何自学Python的?真实经历~
我是如何迁移我的博客的
本文最后更新于 2022年12月09日,已超过 52 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
仙士可
2023/02/01
8940
我是如何迁移我的博客的
我是如何利用Python下载酷狗音乐的
现在的听歌软件动不动就是各种付费,要下载软件才能听,当你下载了之后,你会惊奇的发现这首歌还收费,这就让一向喜欢白嫖的小编感到很伤心了。于是,小编冥思苦想,终于让我发现了其中的奥秘,一起来看看吧。
Python进阶者
2021/07/28
1.1K0
我在工作中是如何使用Git的
最近在网上有个真实发生的案例比较火,说的是一个新入职的员工,不会用 Git 拉代码,第二天被开除。由此,可见 Git 对我们工作的重要性,无论是前端后端,都是离不开 Git 的,下面就让我们一探究竟吧。
政采云前端团队
2021/07/19
2K0
点击加载更多

相似问题

我如何确定在Python中的对象的大小?

21.2K

python具体如何使用api?

1177

如何使用PyCharm调试python脚本?

2680

如何使用Python创建xml文件?

0103

如何使用Python获取系统信息?

2225
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
新浪微博 | 高级总监擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档