所以我有这样的问题:
array_of_things = [[is_shiny=False, is_bumpy=True]
[is_shiny=False, is_bumpy=False]
[is_shiny=True, is_bumpy=True]]
要访问某个项目,我会这样做:
if array_of_things[1][1] == True: #If the second item in list is bumpy
print("The second item is bumpy")
但是,为了使我的代码更清晰,我希望像这样访问数组中的每个项目:
if array_of_things[1].is_bumpy == True: #If the second item in the list is bumpy
print("The second item is bumpy")
我该怎么做?任何帮助将不胜感激。
答案 0 :(得分:5)
一个选项是使用dict
,但如果您想要完全使用问题namedtuple
中给出的语法,则可以使用
from collections import namedtuple
Thing = namedtuple('Thing', ['is_shiny', 'is_bumpy'])
array_of_things = [Thing(False, True), Thing(False, False), Thing(True, True)]
if array_of_things[1].is_bumpy == True:
print("The second item is bumpy")
namedtuple
创建一个新的tuple
子类,其类型名称为first参数。可以使用索引访问字段,就像使用常规tuple
一样,或使用在第二个参数中传递的字段名称。
答案 1 :(得分:2)
如果这些“事物”对你的程序有重要意义,我建议定义一个类,否则,使用dicts:
array_of_things = [{'is_shiny': False, 'is_bumpy': True},
{'is_shiny': False, 'is_bumpy': False},
{'is_shiny': True, 'is_bumpy': True}]
if array_of_things[1]['is_bumpy']: # since it's a boolean, no need for `==`
print("The second item is bumpy")