如何在Python中具有布尔值的列表中打印字典?

彼得普拉

我在列表中有一系列字典,它们都包含相同的键但值不同。基本上,它由4个键值组成。

本质上,我想根据该isOpen筛选出接近的游乐设施可以看出,它们是布尔格式(True / False),所以我使用了1/0,但是它一直返回:

TypeError: list indices must be integers or slices, not dict

这是我到目前为止的代码:

status = [
    {'name': 'Carrousel', 'wait': 0, 'isOpen': True, 'single_rider': None},
    {'name': 'Balloon Flite', 'wait': 0, 'isOpen': True, 'single_rider': None},
    {'name': 'Skyrush', 'wait': 0, 'isOpen': False, 'single_rider': None}, 
    {'name': 'sooperdooperLooper','wait': 5,'isOpen': True,'single_rider': None},
    {'name': 'Fahrenheit', 'wait': 20, 'isOpen': True, 'single_rider': None}
]

for i in status:
    if (status[i]['isOpen' == 1]):
        print (i)

根据列表中的值,我要打印isOpen值为True的游乐设施

像这样:

[
    {'name': 'Carrousel', 'wait': 0, 'isOpen': True, 'single_rider': None},
    {'name': 'Balloon Flite', 'wait': 0, 'isOpen': True, 'single_rider': None},
    {'name': 'sooperdooperLooper','wait': 5,'isOpen': True,'single_rider': None},
    {'name': 'Fahrenheit', 'wait': 20, 'isOpen': True, 'single_rider': None}
]

如果查看结果,Skyrush则将其省略,因为它未打开。

先感谢您!

艾玛

您的问题在于如何定义for循环。如果您希望通过列表元素进行访问的for循环,则代码应如下所示:

for i in status:
    if i['isOpen']:
          print(i)

如果要按索引访问列表中的元素,则应使用以下命令:

for i in range(len(status)):
    if status[i]['isOpen']:
        print(status[i])

您设法结合了导致问题的技术。正如其他人所说,要检查其是否为布尔值,您只需要通过键访问布尔值,而无需求值为1。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章