查找嵌套数据结构
lookuper的Python项目详细描述
lookuper使查找嵌套数据结构中的目标变得容易。A 查找生成与作为参数列表传递的目标匹配的值:
>>>fromlookuperimportlookup>>>list(lookup({'a':[{'b':1}]},'a',0,'b'))[1]
目标可以包含星星(*)来匹配任何东西和globstar (**)以递归方式匹配任何内容:
^{pr2}$请注意,这些特殊字符可以转义:
>>>list(lookup({'*':1},r'\*'))[1]
目标还可以包含函数和正则表达式:
>>>list(lookup({'a':{'b','B'}},'a',str.islower))['b']>>>importre>>>list(lookup({'a':{'b','B'}},'a',re.compile(r'[a-z]')))['b']
食谱
lookuper可以与其他库组合,例如 more-itertools 要只返回一个值:
>>>frommore_itertoolsimportonly>>>deflookup1(data,*targets,**kw):...returnonly(lookup(data,*targets),**kw)>>>lookup1({},'a')>>>lookup1({'a':1},'a')1>>>lookup1({'a':1,'b':2},'*')Traceback(mostrecentcalllast):...ValueError:Expectedexactlyoneiteminiterable,butgot1,2,andperhapsmore.
扩展
默认情况下,lookuper只支持嵌套数据结构,如 映射、序列和集合。它可以扩展到支持其他类型:
>>>fromlookuperimportlookup_data>>>_=lookup_data.register(object,lambdadata:(...(name,getattr(data,name,None))fornameindir(data)...))>>>list(lookup(object(),'__class__','__class__','__name__'))['type']
- 项目
标签: