Python 3.x Boto3:使用';不在';用于DynamoDB中的扫描

Python 3.x Boto3:使用';不在';用于DynamoDB中的扫描,python-3.x,amazon-dynamodb,boto3,Python 3.x,Amazon Dynamodb,Boto3,我已经设法制作了一个筛选表达式,用于从扫描中筛选项目。Smth类似: users = [1, 2, 3] table.scan( FilterExpression=Attr('user_id').is_in(users) ) 我是否可以将其从筛选转换为排除,这样我将获得除ID为1、2、3的用户之外的所有用户。到目前为止,我找到的唯一方法是使用boto3.client,而不是表和低级语法。Smth是这样的: lst_elements = '' attr_elements = {} fo

我已经设法制作了一个筛选表达式,用于从扫描中筛选项目。Smth类似:

users = [1, 2, 3]
table.scan(
    FilterExpression=Attr('user_id').is_in(users) 
)

我是否可以将其从筛选转换为排除,这样我将获得除ID为1、2、3的用户之外的所有用户。

到目前为止,我找到的唯一方法是使用boto3.client,而不是表和低级语法。Smth是这样的:

lst_elements = ''
attr_elements = {}
for id in user_ids:
    lst_element += 'user' + str(id)
    attr_elements['user' + str(id)] = id

client.scan(
    TableName='some_table_name',
    FilterExpression="NOT (user_id IN ({}))".format(lst_element[:-1]),
    ExpressionAttributeValues=attr_elements
)

这个解决方案对我来说很好,但看起来非常复杂。因此,如果您知道一种更好的方法,请添加您的答案。

您可以使用
~
运算符轻松完成此操作:

users=[1,2,3]
table.scan(
FilterExpression=~Attr('user_id')。是否在(users)中
)

查看中的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。再次检查上面的源代码链接以了解详细信息。