You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何格式化DynamoDB中Table.scan()的输出结果?

如何格式化DynamoDB Table.scan()的输出为指定样式?

你可以通过两步实现需求:转换DynamoDB返回的Decimal类型为Python原生数字,然后按字段逐行打印。以下是具体实现代码:

完整示例代码

import boto3
from decimal import Decimal

# 初始化DynamoDB表
table = boto3.resource('dynamodb').Table('Players')

# 扫描表获取数据
response = table.scan()
items = response['Items']

# 定义Decimal转换函数,处理整数/小数情况
def convert_decimal(value):
    if isinstance(value, Decimal):
        return int(value) if value % 1 == 0 else float(value)
    return value

# 遍历每个球员数据(如果只需要第一个,去掉外层for循环即可)
for player in items:
    # 转换所有Decimal字段
    formatted_player = {key: convert_decimal(val) for key, val in player.items()}
    # 按指定格式逐行打印
    for key, val in formatted_player.items():
        print(f"{key}: {val}")
    # 球员之间加空行分隔(可选)
    print()

只打印第一个球员的简化版本

如果只需要输出示例中的第一个球员信息,用这段代码更高效:

import boto3
from decimal import Decimal

table = boto3.resource('dynamodb').Table('Players')
response = table.scan()
items = response['Items']

if items:
    player = items[0]
    for key, val in player.items():
        # 直接转换并打印
        converted_val = int(val) if isinstance(val, Decimal) and val % 1 == 0 else val
        print(f"{key}: {converted_val}")

说明

  • DynamoDB会将数字类型存储为Decimal对象,直接打印会显示Decimal('10')格式,所以需要转换为Python原生的int或float。
  • 代码中的转换逻辑会自动判断Decimal是整数还是小数,分别转换为对应类型,保证输出格式符合预期。

内容的提问来源于stack exchange,提问作者UnknYell0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:27:13