如何检查列表中是否存在索引,如果不存在则使用默认值?

时间:2020-02-13 09:00:05

标签: python list python-2.7

我在Python脚本中声明了以下字典:

    my_dictionary = {'course': row[0],
                'vars': [
                         {'name': 'FIRST_NAME', 'content': row[1]},
                         {'name': 'COURSE_NAME', 'content': row[2]},
                         {'name': 'HOLE_COUNT', 'content': row[3]},
                         {'name': 'SHORTNAME', 'content': row[4]},
                         {'name': 'SSS', 'content': (5 in row: row[5])},
                         {'name': 'COURSE_RECORD', 'content': (6 in row: row[6])},
                        ]
               }

我正在尝试检查列表项是否存在的语法:

                         {'name': 'SSS', 'content': (5 in row: row[5])},
                         {'name': 'COURSE_RECORD', 'content': (6 in row: row[6])},

此检查可以完成吗?

我的语法不正确,因为出现以下错误: SyntaxError: invalid syntax

3 个答案:

答案 0 :(得分:1)

尝试一下:

my_dictionary = {'course': row[0],
                'vars': [
                         {'name': 'FIRST_NAME', 'content': row[1]},
                         {'name': 'COURSE_NAME', 'content': row[2]},
                         {'name': 'HOLE_COUNT', 'content': row[3]},
                         {'name': 'SHORTNAME', 'content': row[4]},
                         {'name': 'SSS', 'content': (row[5] if len(row)>5 else "")},
                         {'name': 'COURSE_RECORD', 'content': (row[6] if len(row)>6 else "")},
                        ]
               }

答案 1 :(得分:0)

这是您如何查看列表中是否有第五项。这是来自交互式控制台(python)。

从一个列表开始,我可以看到它有多少个元素:

>>> my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> len(my_list)
7

它有七个要素。如果我尝试获取第八项(记住索引从零开始),则会收到错误消息:

>>> my_list[0]    # Looks good
'a'
>>> my_list[8]    # oh no, the eight item doesn't exist
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

因此,最简单的方法可能总是尝试通过索引获取项目,然后捕获该错误。但这不是很有效。如果您有默认设置,则更简单的方法是:

>>> my_list[6] if len(my_list) > 6 else 'my_default'
'g'
>>> my_list[7] if len(my_list) > 7 else 'my_default'
'my_default'
>>> 

答案 2 :(得分:0)

这在python 3中会更容易(您应该记住python2已达到eol)

这对我有效

System.out.println(g.getClass().getName());