我在一个列表中有一系列字典,它们都包含相同的键但不同的值。基本上,它由 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 是否为真,如果是,则打印它。
