将布尔值转换为自定义字符串

4
我在我的数据库中有布尔值,在Django项目中,我要将它们打印到PDF中。虽然这很小,但我想让它们打印为是/否,而不是true/false。
我知道如果在模板中输出布尔值,我可以使用yesno:

https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#yesno

但我是在函数内输出这些内容。我知道我可以使用if/else语句,但希望有一种更简洁的方式。
例如 - 是否有一种简短、干净的方法将布尔值转换为自定义字符串。
谢谢。

1
你可以定义一个字典 {True : "yes", False : "no"} - sushanth
2个回答

11
bools = ('no','yes')

value = True
print(f'The value is {bools[value]}')

这利用了Python布尔值实际上是以“int”存储的事实,其中“False” == 0 且“True” == 1,以索引元组中的值。通过用要打印的布尔值索引“bools”元组,然后从元组中检索相应的值。即 bools[False]bools[0] == 'no',而 bools[True]bools[1] == 'yes'。

非常聪明的解决方案! - undefined

4
>>> value = True 
>>> value = 'yes' if value else 'no'
>>> print(value)
'yes'

如果您有一个值列表;
>>> values = [True, False, False, True]
>>> values = ['yes' if val else 'no' for val in values]
>>> print(values)
['yes', 'no', 'no', 'yes']

这是我新喜欢的一种方法,它之所以有效,是因为在Python中 True == 1False == 0;

# single 
value = ('no', 'yes')[value]

# multi 
values = [('no', 'yes')[val] for val in values]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接