在编程中,将字符串"YES"/"NO"转换为布尔值true/false是一个常见的需求。以下是几种优雅的方法来实现这一转换:
def yes_no_to_bool(value):
return True if value.upper() == "YES" else False
# 示例
print(yes_no_to_bool("YES")) # 输出: True
print(yes_no_to_bool("NO")) # 输出: False
def yes_no_to_bool(value):
return {"YES": True, "NO": False}.get(value.upper(), None)
# 示例
print(yes_no_to_bool("YES")) # 输出: True
print(yes_no_to_bool("NO")) # 输出: False
str.lower()
和==
def yes_no_to_bool(value):
return value.lower() == "yes"
# 示例
print(yes_no_to_bool("YES")) # 输出: True
print(yes_no_to_bool("NO")) # 输出: False
operator.itemgetter
from operator import itemgetter
def yes_no_to_bool(value):
mapping = {"YES": True, "NO": False}
return itemgetter(value.upper())(mapping)
# 示例
print(yes_no_to_bool("YES")) # 输出: True
print(yes_no_to_bool("NO")) # 输出: False
这些方法广泛应用于数据处理、用户输入验证、配置文件解析等场景。例如,在处理用户提交的表单数据时,可能需要将用户输入的"YES"/"NO"转换为布尔值以便进行逻辑判断。
value.upper()
或value.lower()
。None
或其他默认值。可以通过添加异常处理来确保程序的健壮性。def yes_no_to_bool(value):
try:
return {"YES": True, "NO": False}[value.upper()]
except KeyError:
raise ValueError("Invalid input: must be 'YES' or 'NO'")
# 示例
print(yes_no_to_bool("YES")) # 输出: True
print(yes_no_to_bool("NO")) # 输出: False
print(yes_no_to_bool("Maybe")) # 抛出 ValueError
通过这些方法,可以优雅且高效地实现字符串到布尔值的转换。
领取专属 10元无门槛券
手把手带您无忧上云