Python:防止python索引数组.列表索引必须是整数

到目前为止,我一直试着研究这个没有运气.我是
python的新手,所以我很抱歉,我确信这是一个简单的解决方案.

local obj = {
    'button1': [100, 750],
    'button2': {
        'loc': [100, 1750],
        'returns': 2
     }
}

我希望一些对象具有’return’的额外属性.如果我以编程方式循环遍历对象,我必须检查’loc’数组是否存在,如果我想访问它.

if obj[element]['loc'] is not None:
   # get array w obj[element]['loc']
else:
   # get array w obj[element]

问题是我收到一个错误:

# list indices must be integers
TypeError: list indices must be integers, not str

我理解为什么,这是因为’button1’是一个数组,所以python启动查找索引操作,但找到一个字符串而不是一个int.但是,我需要该括号来搜索我的下一个对象上的[‘loc’]属性.我也知道你不能用’.’运算符在python索引属性所以我不能这样做…

如果没有它试图索引前一个对象的数组,我怎么能检查属性是否存在.

最佳答案

if isinstance(obj[element], dict) and 'loc' in obj[element]:

或者,您可以使用try …除了捕获异常:

try:
    # do something with obj[element]['loc']
except TypeError:
    pass
点赞