Amazon web services Boto3 list\追加一个值以覆盖列表中的空值

Amazon web services Boto3 list\追加一个值以覆盖列表中的空值,amazon-web-services,aws-lambda,amazon-dynamodb,boto3,Amazon Web Services,Aws Lambda,Amazon Dynamodb,Boto3,我正在编写一个小lambda函数来更新我的DynamoDB中的一个游戏项。我的游戏项目有一个参与者属性,它是由游戏中每个参与者的参与者id组成的列表。当游戏尚未有任何参与者时,即括号中后面的一轮,列表将包含2个空值: 我想在每次添加新参与者时用字符串覆盖空值。目前,我可以将新字符串附加到列表中,但空值仍然存在: 如何使用boto3用字符串覆盖2个空值中的一个? i、 e.添加一个参与者后显示为[participantOneId,Null],添加两个参与者后显示为[participantOneId

我正在编写一个小lambda函数来更新我的DynamoDB中的一个游戏项。我的游戏项目有一个参与者属性,它是由游戏中每个参与者的参与者id组成的列表。当游戏尚未有任何参与者时,即括号中后面的一轮,列表将包含2个空值:

我想在每次添加新参与者时用字符串覆盖空值。目前,我可以将新字符串附加到列表中,但空值仍然存在:

如何使用boto3用字符串覆盖2个空值中的一个? i、 e.添加一个参与者后显示为[participantOneId,Null],添加两个参与者后显示为[participantOneId,participantTwoId] 这是我当前的实现:

import boto3
import json

dynamodb = boto3.resource("dynamodb")
gamesTable = dynamodb.Table('games')

def lambda_handler(event, context):
  # get "next_game_id" and "winner_id" from the event body
  updated_next_game = gamesTable.update_item(
      Key={'id': next_game_id },
      UpdateExpression="SET participants = list_append(participants, :i)",
      ExpressionAttributeValues={
        ':i': [winner_id],
      },
      ReturnValues="ALL_NEW"
  )

如果不需要向列表中追加任何内容,则不希望使用list\u append。像这样的方法应该可以很好地工作:

UpdateExpression="SET participants[0] = <whatever>"
和/或

UpdateExpression="SET participants[1] = <whatever>"

如果您事先不知道需要设置这两个元素中的哪一个,则始终可以使用。

为什么首先存储两个空值?好的观点@jarmod