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

获取嵌套字典数据时遇AttributeError:'list'对象无'get'属性

问题分析与解决方法

可能的问题根源

尽管调试时看到line是字典,但实际遍历过程中大概率存在部分line元素不是字典,或是LinkedTxn字段的值为空列表/非列表类型,导致后续调用[0]或属性访问时触发错误;也可能是遍历逻辑误将列表整体当成单个字典处理。

修复后的代码示例

通过增加安全校验,兼容异常数据格式,同时提取目标字段:

# 示例输入数据
payment_data = [{'Amount': 45.0,'LinkedTxn': [{'TxnId': '129', 'TxnType': 'Invoice'}]}]
result = []

for line in payment_data:
    # 校验当前line是否为字典类型
    if not isinstance(line, dict):
        continue
    amount = line.get('Amount')
    # 读取LinkedTxn,不存在则返回空列表
    linked_txn_list = line.get('LinkedTxn', [])
    # 校验LinkedTxn是否为非空列表
    if isinstance(linked_txn_list, list) and linked_txn_list:
        linked_txn = linked_txn_list[0]
        # 校验列表元素是否为字典
        if isinstance(linked_txn, dict):
            txn_id = linked_txn.get('TxnId')
            txn_type = linked_txn.get('TxnType')
            result.append([amount, txn_type, txn_id])

print(result)
# 输出: [[45.0, 'Invoice', '129']]

关键优化点

  • 多层类型校验:确保line是字典、LinkedTxn是列表且非空、列表元素是字典,避免格式异常触发错误
  • 带默认值的get方法:line.get('LinkedTxn', [])在字段不存在时返回空列表,防止None调用[0]出错
  • 跳过异常数据:单个不符合格式的数据不会中断整个遍历流程

排查辅助方案

如果仍有错误,可在遍历中添加打印,定位异常数据:

for idx, line in enumerate(payment_data):
    print(f"第{idx}条数据类型: {type(line)}, 内容: {line}")
    # 后续处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:09:24