Python 2.7:dict(zip())不适用于布尔值
这是我的节目Python 2.7:dict(zip())不适用于布尔值,python,dictionary,Python,Dictionary,这是我的节目 l1 = ['alpha','image'] l2 = ['False','False'] d = dict(zip(l1,l2)) if d['image']: print("passing") 结果: 经过 这里d['image']是假的。但它仍然在if条件下运行。为什么即使值为False,它也会进入循环中?您传递的是字符串“False”不是布尔对象 l1 = ['alpha','image'] l2 = [False,False] #--->Boo
l1 = ['alpha','image']
l2 = ['False','False']
d = dict(zip(l1,l2))
if d['image']:
print("passing")
结果:
经过
这里d['image']是假的。但它仍然在if条件下运行。为什么即使值为False,它也会进入循环中?您传递的是
字符串“False”
不是布尔对象
l1 = ['alpha','image']
l2 = [False,False] #--->Boolean
d = dict(zip(l1,l2))
if d['image']:
print("passing")
根据评论进行编辑
if d['image'] == "True":
print("passing")
值仍然是字符串。所以您只是在评估字符串是否为空
如果确实需要布尔值,请删除引号或检查字符串是否为“True”
由于您在注释中提到
'False'
是从文件读取的,因此必须是字符串,因此必须将其与字符串'False'
进行比较。尽管如此,我建议将此检查设置为不区分大小写
l1 = ['alpha','image']
l2 = ['False','False']
d = dict(zip(l1,l2))
if d['image'].lower() == 'false':
print("passing")
将字符串转换为其布尔等价物的更通用的方法如下所示
def string_to_bool(s):
if s.lower() == 'true':
return True
elif s.lower() == 'false':
return False
else:
raise ValueError('string has no boolean conversion')
然后你就可以做了
if not string_to_bool(d['image']):
print("passing")
字符串“False”解析为True<代码>如果为“False”:打印(True)->打印True
if False:print(True)
->不打印任何内容。请执行此操作d=dict(zip(l1,map(bool,l2))
。谢谢。我正在使用csv.reader从csv文件读取值。在这种情况下,即使该值为False,csv.reader也会将其读取为“False”。我如何解决这个问题?我需要从csv文件中读取2行,并压缩iTunes更新的代码段。使用字符串比较。谢谢。我正在使用csv.reader从csv文件读取值。在这种情况下,即使该值为False,csv.reader也会将其读取为“False”。我如何解决这个问题?我需要从csv文件中读取2行并将其压缩
if not string_to_bool(d['image']):
print("passing")