读取dynamodb并获得多余的“十进制”单词

Ken*_*han 6 python amazon-dynamodb

[{'year': Decimal('222'), 'title': 'aaaaaas'}, {'year': Decimal('1111'), 'title': 'dddd'}]
Run Code Online (Sandbox Code Playgroud)

当我扫描 dynamodb 表时,我得到的数据是一些多余的“十进制”。我想转换成下面的。谢谢。

[{'year': '222', 'title': 'aaaaaas'}, {'year': '1111', 'title': 'dddd'}]
Run Code Online (Sandbox Code Playgroud)

小智 5

当在 DynamoDB 中存储整数时(添加数据时不进行特定类型转换),我发现 DynamoDB 会将其存储为 Decimal。

我已将这一单行代码用于从 DynamoDB 检索的项目,它将所有 Decimal 值转换为整数:

item_retrieved_from_db = dict(map(lambda x: (x[0], int(x[1])) if isinstance(x[1], Decimal) else x, item_retrieved_from_db.items()))
Run Code Online (Sandbox Code Playgroud)


Boa*_*les 1

你要求 Python 打印一个字典列表,而不告诉它你想要它的外观。因此,它为您提供的是在 Python 程序中使用它所需的表示形式。无论谁存储数据,都决定将year其存储为Decimal.

Decimal如果你告诉 Python 你希望数据是什么样子,你的“冗余”就会消失:

a =[{'year': Decimal('222'), 'title': 'aaaaaas'}, {'year': Decimal('1111'), 'title': 'dddd'}]
for d in a:
    for (k,v) in d.items():
        print (k,"=",v)

year = 222
title = aaaaaas
year = 1111
title = dddd
Run Code Online (Sandbox Code Playgroud)

您不需要将 转换Decimalstr. 当需要显示它时,它会正确打印出来。