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

我没有能力找到一个易于理解的描述,实际上如何使用Python的itertools.groupby()函数。 我试图做的是:

  • 在这个例子中,列出一个外部化的lxml组件的年轻人
  • 根据一些标准将其分成小组
  • 之后再独立地迭代这些团队中的每一个。

我已经评估过文件,还有例子,但是我试图通过简单的数字清单使用它们时遇到了问题。

那么,我该如何使用itertools.groupby()呢? 是否存在我应该使用的额外策略? 提及优秀的“需求”分析肯定会另外受到重视。

0
2019-05-04 21:06:30
资源 分享
答案: 2

重要的提示: 你需要 安排你的信息 第一。


我真正没有得到的组件是在实例构建和构建中

groups = []
uniquekeys = []
for k, g in groupby(data, keyfunc):
   groups.append(list(g))    # Store group iterator as a list
   uniquekeys.append(k)

k是现有的组织密钥,g也是一个迭代器,您可以使用它迭代该组织密钥指定的团队。 简单地说,groupby迭代器本身返回迭代器。

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

from itertools import groupby

things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus")]

for key, group in groupby(things, lambda x: x[0]):
    for thing in group:
        print "A %s is a %s." % (thing[1], key)
    print " "

这肯定会为您提供结果:

熊是动物。
鸭子是宠物。

仙人掌是一种植物。

速率船只是一种车辆。
大学巴士是一辆卡车。

在这个例子中,things是元组的核对表,其中每个元组中的第一件事是第二件事来自的团队。

groupby()函数需要进行2次辩论:(1)团队信息以及(2)与之合作的函数。

下面,lambda x: x[0]通知groupby()使用每个元组中的第一个东西作为组织键。

在上面的for声明中,groupby返回3(key,team iterator)设置 - 只要每个一个类的密钥。 您可以使用返回的迭代器来迭代每个特定的东西,因为团队。

下面是一个有点不同的实例和相同的信息,利用清单理解:

for key, group in groupby(things, lambda x: x[0]):
    listOfThings = " and ".join([thing[1] for thing in group])
    print key + "s:  " + listOfThings + "."

这肯定会为您提供结果:

宠物:熊也是鸭子。
植物:仙人掌。
卡车:评价船只和高校巴士。

0
2019-05-19 20:57:27
资源

你能告诉我们你的代码吗?

Python文档上的实例相当简单:

groups = []
uniquekeys = []
for k, g in groupby(data, keyfunc):
    groups.append(list(g))      # Store group iterator as a list
    uniquekeys.append(k)

因此,在您的实例中,信息是节点的核对表,keyfunc是标准函数的推理所在,之后groupby()对信息进行组合。

你必须要小心 安排信息 在您调用groupby之前的标准或它将无法运行。 事实上,groupby方法只是通过一个清单重复,并且每当密钥调整它开发一个新团队时。

0
2019-05-08 04:31:42
资源