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

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第三方库


热门话题
如何使用Netbeans在Java中创建可执行文件   swing Set不透明(真/假);JAVA   java JPA无法删除具有onotomany关系和cascatype all的实体   java Hibernate自参考映射难题   Java/从字符串到Java代码   java为什么我已经在取整了,却得到了一个无终止小数扩展?   java Wicket onsubmit信息对话框   java如何使用类、类加载器和URL获取资源   java在多模块项目中使用License Maven插件时出错   java HashSet“contains”方法是如何工作的?   图像JavaPNG显示为黑色   java如何在保持内容完整的同时在两个活动之间切换?   JAVA在Tomcat 7.0.27中,WAR无法为Prod正确解包   listview的java onclicklistener   JavaXPages托管Bean可以跨多个数据库工作吗?   java无法停止服务空对象引用错误Android   java将UTF8编码的字符串转换为人类可读的字符串   JavaSpring与JBossSAML的集成   java如何替换AuthorizationCodeInstalledApp类?