加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 12:00:54 所属栏目:Python 来源:网络整理
导读:到目前为止,我一直试着研究这个没有运气.我是 python的新手,所以我很抱歉,我确信这是一个简单的解决方案. local obj = { 'button1': [100,750],'button2': { 'loc': [100,1750],'returns': 2 }} 我希望一些对象具有’return’的额外属性.如果我以编程方式循
到目前为止,我一直试着研究这个没有运气.我是 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读