我在列表中有一系列字典,它们都包含相同的键但值不同。基本上,它由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] 删除。
我来说两句