Python索引器:列表索引超出范围';没有道理

Python索引器:列表索引超出范围';没有道理,python,list,Python,List,我正在编写一个小python代码来解析来自GoogleMapsAPI的响应,但是我得到了一个“IndexError:list index out-range”错误,这对我来说没有任何意义。对于某些请求,代码是有效的,对于其他一些请求,代码不是有效的 代码的目的是将地址响应构造为随机地址,并放入dict结构中供以后使用 我检查了列表的范围(例如,计数到n-1),但这似乎不是问题 Exact traceback: Traceback (most recent call last): File "

我正在编写一个小python代码来解析来自GoogleMapsAPI的响应,但是我得到了一个“IndexError:list index out-range”错误,这对我来说没有任何意义。对于某些请求,代码是有效的,对于其他一些请求,代码不是有效的

代码的目的是将地址响应构造为随机地址,并放入dict结构中供以后使用

我检查了列表的范围(例如,计数到n-1),但这似乎不是问题

Exact traceback:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "geoCodeAPI.py", line 67, in getLocation
    data[i] = {'formatted_address': formattedAddress[i], 'street': streetname[i], 'street_number': streetnumber[i], 'city': city[i], 'country': country[i], 'lat': lat[i], 'lng': lng[i]}
IndexError: list index out of range

您的列表大小不同。虽然
格式化地址、lat
lng
result['results']
的大小相同,但在内部循环中创建了
国家、街道编号、街道名称
城市
,每个
s['addresscomponents]
列表。如果选中,可能会为每个
格式化地址创建多个
“NA”
国家(非国家/地区的每个地址元素一个)。因此,如果在
国家/地区
的长度上迭代,则会溢出
格式化地址

这对我很有用:

    for s in result['results']:
        formattedAddress.append(s['formatted_address'])
        lat.append(s['geometry']['location']['lat'])
        lng.append(s['geometry']['location']['lng'])
        country.append("NA")
        streetnumber.append("NA")
        streetname.append("NA")
        city.append("NA")

        for foo in s['address_components']:
            if foo['types'][0] == "country":
                country[-1] = foo['long_name']
            if foo['types'][0] == "street_number":
                streetnumber[-1] = foo['long_name']
            if foo['types'][0] == "route":
                streetname[-1] = foo['long_name']
            if "locality" in foo['types'][0]:
                city[-1] = foo['long_name']
        data = dict()

我不知道这是不是一个错误,只在这里显示,但

else:
country.append("NA")

似乎没有正确的缩进,因此无论条件如何,每次都会执行该缩进,并且您的国家/地区列表比任何其他列表都长…

我还注意到,当数据中某个点的地址错误时,会发生此错误。因此,包含“tyexcept”块将有助于捕获索引器错误(或任何其他错误),并允许代码继续运行

例如:

try:
     'Your Code' 
except IndexError:
        print("Wrong Address!")

请始终提供完整的错误消息,包括回溯。“”获取“索引器”错误:列表索引超出范围“错误”。“”。杜德,请完整回溯…很抱歉回溯:回溯(最近一次调用):文件“”,第1行,在文件“geoCodeAPI.py”中,第67行,在getLocation数据中[i]={'formatted_address':formattedAddress[i],'street':streetname[i],'street_number':streetnumber[i],'city':city[i],'country[i],'lat':lat[i],'lng[i]}索引器错误:列出索引超出范围编辑您的问题,添加回溯并修复缩进。除了注释:
数据可以是字典列表。感谢您提供缩进提示。我改变了缩进。
try:
     'Your Code' 
except IndexError:
        print("Wrong Address!")