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

获取邮编存入DataFrame时报'SimpleZipcode' object is not subscriptable如何解决

报错原因
  • 直接触发报错的代码是result[0]['zip_code']:search.by_city_and_state返回的列表元素为SimpleZipcode类的实例,不属于字典类型,不支持[]下标取值的调用方式,因此抛出object is not subscriptable错误。
  • 代码还存在隐藏逻辑问题:判断属性存在时用的字段名是zip_code,返回值时用的字段名是zipcode,二者名称不匹配,即使解决下标报错后也可能取不到预期结果。
修复方案

首先将字典式取值改为类实例通用的点属性取值,同时统一字段名,修正后的函数代码如下:

def get_zipcode(city, state):
    search = SearchEngine()
    result = search.by_city_and_state(city=city.lower(), state=state.lower())

    # 用hasattr判断属性存在性避免属性不存在报错,统一用点语法取属性、统一字段名
    if result and result[0] and hasattr(result[0], 'zip_code') and result[0].zip_code:
        return result[0].zip_code
    else:
        return 0

如果不确定SimpleZipcode实例的邮编字段名到底是zip_code还是zipcode,可以在测试时添加一行打印代码确认:

# 测试时添加该行打印所有属性名,确认正确字段
print(dir(result[0]))

另外原有代码中apply传参时将城市、州转为大写,函数内部又转为小写,属于冗余操作,可任选一处做大小写转换即可,不影响核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:02