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

group-by-attr的Python项目详细描述


CompatibilityImplementationsFormatDownloads

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

group_by_attr(attr,items)

安装:

$ pip install group-by-attr

示例

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

>>>frompprintimportpprint>>>fromcollectionsimportnamedtuple>>>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'},)}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java需要一种简单的方法来创建用于排序的comparator类   java getReadableDatabase和getWriteableDatabase无法解析   查找列表<Long>中与某个元素对应的所有索引的java方法   安卓将视图添加到ViewFlipper会导致java。StackOverflowerr语言   java根据它所包含的长“curTime”类字段将N的列表拆分为24(小时)   Android N中的Java8流API   自动生成Java策略文件的安全性   垃圾收集鼓励Java中的主要GC(但不是STW GC)   java如何检查UDP服务器上侦听的客户端数量   在前一台主机被Datastax Java驱动程序关闭后,Cassandra尝试重新连接到下一台主机   java如何使用Spring Boot创建部分代理   java是否有一个网站或资源可以完全比较EJB版本   java无需使用第三方库从gradle生成输出   继承由于这个多态性的基本示例中的语法有什么不同吗?(爪哇)   java字符串数组中的空字符串   java为什么CMS中的初始标记阶段是串行的   为什么Lucene有时与InChIKeys不匹配?   安卓通知Java应用程序数据库中的更改   java如何将单个json对象值解析为按钮   java打印堆栈将运行时错误跟踪到文件