iterables的sql风格连接。

join的Python项目详细描述


python iterables的sql风格连接。

https://travis-ci.org/StuartAxelOwen/join.svg?branch=master
>>>fromjoinimportjoin,merge,tuple_join>>>dogs=[...Dog('gatsby','Rruff!',16),...Dog('ein','wruf!',9),...]>>>cats=[...Cat('pleo','mreeeoww',16),...Cat('xena','mreow',12),...Cat('gatsby','rowr',15),...]>>>catdogs=merge(cats,dogs,key='name')>>>catdogs[CatDog({'right':Dog(name='gatsby',woof='Rruff!',weight=16),'name':'gatsby','weight':15,'meow':'rowr','woof':'Rruff!','left':Cat(name='gatsby',meow='rowr',weight=15)})]>>>catdogs[0].meow'rowr'>>>catdogs[0].woof'Rruff!'

安装

使用pip安装:

pip install join

使用

join完成了将iterable项关联在一起的工作,但为您提供了所有定制功能,允许您提供自己的连接函数、左右iterable的单独键,甚至允许您使用函数而不是属性名。

^例如,上面使用的{tt3}$就是join使用对象联合来联接匹配的对象。您可以使用元组联接,这是join

>>>join(cats,dogs,key='name',join_fn=tuple_join)[(Cat(name='gatsby',meow='rowr',weight=15),Dog(name='gatsby',woof='Rruff!',weight=16))]

提供自己的连接功能很简单:

>>>defweight_sum(left,right):...returnleft.weight+right.weight...>>>join(cats,dogs,key='name',join_fn=weight_sum)[31]

使用单独的按键功能也很简单:

>>>defcat_key(cat):...returncat.weight%3==0# weight divisible by 3...>>>defdog_key(dog):...returndog.weight%4==0# weight divisible by 4...>>>defname_join(left,right):...returnleft.name+'-'+right.name...>>>join(cats,dogs,left_key=cat_key,right_key=dog_key,join_fn=name_join)['pleo-ein','xena-gatsby','gatsby-gatsby']

贡献

欢迎提出请求和问题!使用sh run_tests.sh从项目根目录运行测试。

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

推荐PyPI第三方库


热门话题
Java岩石、布、剪刀程序,带文件输入   java迭代Hashmap中的值列表   数组不能正确循环   JavaHibernate:对于一个遥远的惰性依赖,有一个渴望的获取者吗?   交通阻塞下的java车辆路径选择   如何在java中创建布尔方法来检查添加到具有特定索引的arraylist的对象   java Tomcat配置文件/上下文xml似乎已经崩溃了。请确保它是可分析和有效的。有关详细信息,请参阅服务器日志   为什么坐标有时相等,有时不相等?   java libgdx CameraInputController过于敏感,平移开始得太早   将C++排序函数移植到java   java应该是十进制的   swing Java JFrame中的所有内容都不可见   java使用数组中除一个元素以外的所有元素   从子类运行构造函数的Java