有什么好方法可以检查Python的dict对象中是否存在属性集合?目前,我们正在这样做,但似乎有更好的方法:properties_to_check_for = ['name', 'date', 'birth']for property in properties_to_check_for: if property not in dict_obj or dict_obj[property] is None: return False非常感谢!
3 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
您可以使用any()
:
any(dict_obj.get(prop) is None for prop in properties_to_check_for )
如果property
在中找不到任何properties_to_check_for
值或值为,则将返回True None
。
jeck猫
TA贡献1909条经验 获得超7个赞
对于大型字典与大型列表比较,将set返回的-like对象viewkeys与的set版本进行比较properties_to_check_for可能会带来性能上的好处
if dict_obj.viewkeys() >= set(properties_to_check_for):
时序测量:
timeit.timeit('dict_obj.viewkeys() >= set(properties_to_check_for)',
setup='dict_obj = dict(zip(xrange(100000), xrange(100000))); properties_to_check_for=xrange(10000)',
number=10000)
9.82882809638977
timeit.timeit('all(key in dict_obj for key in properties_to_check_for)',
setup='dict_obj =dict(zip(xrange(100000),xrange(100000)));properties_to_check_for=list(xrange(10000))',
number=10000)
12.362821102142334
添加回答
举报
0/150
提交
取消