Skip to main content
 首页 » 编程设计

python之如何在 Python 中打印出具有 bool 值的列表中的字典

2025年05月04日10davidwang456

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

本质上,我想根据 isOpen 值过滤掉接近的游乐设施。可以看出,它们是 bool 格式 (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 被省略了,因为它没有打开。

提前致谢!

请您参考如下方法:

使用列表理解。

[el for el in status if el["isOpen"]] 

这会遍历 status 中的每个字典,并过滤掉“isOpen”为真的字典。

如果你想修改你当前的技术来工作,你应该这样做:

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

此处,i 指的是列表中的单个字典。然后检查它的 isOpen 是否为真,如果是,则打印它。