我需要写几个这样的函数。是否有更好的方法在一行左右使用lambda编写此函数。
def is_digital(offers):
for offer in offers:
digital = True if 'digital' in offer and offer['digital'] else False
if digital:
return True
return False
答案 0 :(得分:6)
您可以使用any
。
def is_digital(offers):
return any(offer.get('digital') for offer in offers)
或者如果你想删除完整的函数定义并且只使用lambda(不是最好的主意),你可以这样做:
is_digital = lambda offers: any(offer.get('digital') for offer in offers)
感谢jonrsharpe的评论提醒我.get
是一件事。
答案 1 :(得分:2)
至于我,检查的方式更具可读性和明确性:
def is_digital(offers):
return any(map(lambda x: x.get('digital', False), offers))
你甚至可以抛出默认的'False',因为如果没有找到指定的键,'None'是默认的返回值。但我认为代码将变得不那么明确。
def is_digital(offers):
return any(map(lambda x: x.get('digital'), offers))
选择是你的。 =)