Skip to main content

按共享属性的值对序列中的项目进行分组。

项目描述

兼容性 实现 格式 下载

按共享属性的值对序列中的项目进行分组。

group_by_attr(attr, items)

安装:

$ pip install group-by-attr

例子

假设您想将一些“结构”实例组合在一起。

>>> from pprint import pprint
>>> from collections import namedtuple
>>> Struct = namedtuple('Struct', ('x', 'y', 'z'))
>>> a, b, c = (
...     Struct(x=1, y=1, z=1),
...     Struct(x=1, y=2, z=2),
...     Struct(x=1, y=1, z=3))

如果我们通过“x”属性对这些实例进行分组,我们应该期望一个包含所有三个项目的组:

>>> pprint(group_by_attr(attr='x', items=(a, b, c)))
{1: (Struct(x=1, y=1, z=1),
     Struct(x=1, y=2, z=2),
     Struct(x=1, y=1, z=3))}

相反,如果我们要按“y”分组,我们应该期待不同的分组:

>>> pprint(group_by_attr(attr='y', items=(a, b, c)))
{1: (Struct(x=1, y=1, z=1),
     Struct(x=1, y=1, z=3)),
 2: (Struct(x=1, y=2, z=2),)}

最后,按“z”分组将产生三个单独的组:

>>> pprint(group_by_attr(attr='z', items=(a, b, c)))
{1: (Struct(x=1, y=1, z=1),),
 2: (Struct(x=1, y=2, z=2),),
 3: (Struct(x=1, y=1, z=3),)}

该函数也可以使用替代的 getattr,只要它实现相同的接口(将项目和属性名称作为参数)。例如,您可以对字典进行分组:

>>> pprint(group_by_attr(
...     attr='x',
...     items=(
...         {'x': 1, 'y': 'a'},
...         {'x': 2, 'y': 'b'},
...         {'x': 1, 'y': 'c'}),
...     getattr_fn=dict.__getitem__))
{1: ({'x': 1, 'y': 'a'},
     {'x': 1, 'y': 'c'}),
 2: ({'x': 2, 'y': 'b'},)}

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

group-by-attr-1.0.1.tar.gz (2.1 kB 查看哈希)

已上传 source

内置分布

group_by_attr-1.0.1-py2.py3-none-any.whl (2.9 kB 查看哈希

已上传 2 7