python支持什么索引_Python:支持索引的内存对象数据库?

如果内存中的数据库解决方案最终要做的工作太多,那么这里有一个自己筛选它的方法,您可能会发现它很有用。

get_filter函数接受参数来定义如何筛选词典,并返回一个可以传递到内置的filter函数中以筛选词典列表的函数。import operator

def get_filter(key, op=None, comp=None, inverse=False):

# This will invert the boolean returned by the function 'op' if 'inverse == True'

result = lambda x: not x if inverse else x

if op is None:

# Without any function, just see if the key is in the dictionary

return lambda d: result(key in d)

if comp is None:

# If 'comp' is None, assume the function takes one argument

return lambda d: result(op(d[key])) if key in d else False

# Use 'comp' as the second argument to the function provided

return lambda d: result(op(d[key], comp)) if key in d else False

people = [{'age': 16, 'name': 'Joe'}, {'name': 'Jane', 'favourite_color': 'red'}]

print filter(get_filter("age", operator.gt, 15), people)

# [{'age': 16, 'name': 'Joe'}]

print filter(get_filter("name", operator.eq, "Jane"), people)

# [{'name': 'Jane', 'favourite_color': 'red'}]

print filter(get_filter("favourite_color", inverse=True), people)

# [{'age': 16, 'name': 'Joe'}]

这很容易扩展到更复杂的筛选,例如根据值是否与regex匹配进行筛选:p = re.compile("[aeiou]{2}") # matches two lowercase vowels in a row

print filter(get_filter("name", p.search), people)

# [{'age': 16, 'name': 'Joe'}]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值