Python 3.x 我们如何获得与数据库中DynamoDB查询结果相同的列序列?

Python 3.x 我们如何获得与数据库中DynamoDB查询结果相同的列序列?,python-3.x,collections,boto3,dynamodb-queries,aws-dynamodb,Python 3.x,Collections,Boto3,Dynamodb Queries,Aws Dynamodb,我正在寻找一种获得boto3 DynamoDB查询结果(列)的方法,就像我插入DB的方法一样 我的插入操作: DYNAMO_CLIENT.put_item( TableName=TABLE_NAME, Item={ "id": {"S": data.id}, "name": {"S": data.name}

我正在寻找一种获得boto3 DynamoDB查询结果(列)的方法,就像我插入DB的方法一样

我的插入操作:

DYNAMO_CLIENT.put_item(
            TableName=TABLE_NAME,
            Item={
                "id": {"S": data.id},
                "name": {"S": data.name},
                "account_id": {"S": data.provider_account_id},
                "provider": {"S": data.provider},
                "is_enabled" : {'BOOL':data.enabled)}
           },
)
我的查询:

response = table.query(
                IndexName='provider-id-index',
                KeyConditionExpression=Key('provider').eq(provider)
            )
        for item in response["Items"]:
            print(item.values())
{"is_enabled":False, name:"sample","account_id":"12345","id="345","provider":"none"}
{"id="345",name:"sample","account_id":"12345","provider":"none","is_enabled":False}
我得到的输出:

response = table.query(
                IndexName='provider-id-index',
                KeyConditionExpression=Key('provider').eq(provider)
            )
        for item in response["Items"]:
            print(item.values())
{"is_enabled":False, name:"sample","account_id":"12345","id="345","provider":"none"}
{"id="345",name:"sample","account_id":"12345","provider":"none","is_enabled":False}
期望:

response = table.query(
                IndexName='provider-id-index',
                KeyConditionExpression=Key('provider').eq(provider)
            )
        for item in response["Items"]:
            print(item.values())
{"is_enabled":False, name:"sample","account_id":"12345","id="345","provider":"none"}
{"id="345",name:"sample","account_id":"12345","provider":"none","is_enabled":False}
我知道
response[“Items”]
返回
dict
对象列表(无序)。但我正在寻找一种方法来做到这一点

我尝试了
collections.OrderdDict(item.values()[0])
,但没有成功

这个问题的任何解决办法都将受到欢迎


谢谢。

您无法控制字典中项目的顺序。如果你需要的东西有一定的顺序,你可能应该重新思考为什么会这样。如果顺序对于您无法控制的事情很重要,您可以随时获取结果,并将值放入按您希望的方式排序的新对象中。如果该顺序对于每个项目都是唯一的,则可以将该顺序存储在项目的属性中。一般来说,这不是您应该关心的问题。

您是否愿意维护用于插入的密钥列表?如果是这样,可能会使用相同的列表将返回的dict映射到预期的dictsye,我们无法控制dict的顺序,但是有没有方法查询dynamo以返回OrderdDict..?没有。响应只是JSON。它没有订单。