Lui*_*uez 2 python dictionary boolean
我正在使用一些标志来跟踪以下行为:
is_registered = True
has_paid = False
has_phone = True
if (is_registered and has_phone and has_paid):
do_something
Run Code Online (Sandbox Code Playgroud)
但是如果字段数增加,我更喜欢将它存储在字典中
user_flags = {'is_registered':True,'has_paid':False,'has_phone':True}
if (user_flags['is_registered'] and user_flags['has_paid'] and user_flags['has_phone']):
do_something
Run Code Online (Sandbox Code Playgroud)
对于少量商品而言,这可能是好的,但如果我说了超过50件商品,它就会变得非常冗长
你可以使用all():
>>> user_flags = {'is_registered':True, 'has_paid':False, 'has_phone':True}
>>> all(user_flags.values())
False
>>> user_flags = {'is_registered':True, 'has_paid':True, 'has_phone':True, 'one_more_flag':True}
>>> all(user_flags.values())
True
Run Code Online (Sandbox Code Playgroud)
或者,将逻辑反转为any():
>>> user_flags = {'is_registered':True, 'has_paid':False, 'has_phone':True}
>>> not any(not value for value in user_flags.values())
False
>>> user_flags = {'is_registered':True, 'has_paid':True, 'has_phone':True, 'one_more_flag':True}
>>> not any(not value for value in user_flags.values())
True
Run Code Online (Sandbox Code Playgroud)