【问题标题】:How do you check to see if an index exists in a list, and use a default value if it does not?如何检查列表中是否存在索引,如果不存在则使用默认值?
【发布时间】:2026-02-05 09:40:02
【问题描述】:

我在我的 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

【问题讨论】:

  • 如果您希望将值评估为布尔值,您可以使用5 in row[5]
  • @CDJB 感谢您的评论。我正在寻找的是“如果这是在数组中设置然后使用它”。
  • 什么是row - 一个列表或另一个字典?如果是字典,则5 in row 检查row 是否包含键5,但是它是一个列表,5 in row 会告诉您row 是否包含具有的元素> 5,
  • @Błotosmętek 感谢您的评论。 row 是一个列表。 5 in row 会返回一个布尔值,对吧?
  • 你想看看列表中是否存在5的值,或者你想看看列表中是否有第五项?

标签: python list python-2.7


【解决方案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 "")},
                        ]
               }

【讨论】:

    【解决方案2】:

    查看列表中是否有第五项的方法如下。这是来自交互式控制台 (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'
    >>> 
    

    【讨论】:

      【解决方案3】:

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

      这对我有用

      my_dict={'test': ((row[5],'')[len(row)>5])}
      

      【讨论】:

        最近更新 更多