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")