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

Python遍历字典生成邮编列表时For Loop触发TypeError错误

修复TypeError并提取所有zip_code字段值

错误原因分析

  1. 你遍历的是zipcodeData字典本身,得到的i是字典的键(这里只有"zip_codes"这一个字符串键),用字符串去索引zipcodeData["zip_codes"]这个列表,自然会触发list indices must be integers or slices, not str错误。
  2. 代码里的.append()没有传入要添加的元素,而且每次循环都重新赋值zipcodeList,完全不符合列表构建的逻辑。

正确实现方式

方式1:普通for循环

import requests, json
zip_code = "85215"
distance = "20"

# list of zip codes in an area
zipcodeData = {'zip_codes': [{'zip_code': '85140', 'distance': 18.585, 'city': 'San Tan Valley', 'state': 'AZ'}, {'zip_code': '85297', 'distance': 18.395, 'city': 'Gilbert', 'state': 'AZ'}, {'zip_code': '85295', 'distance': 17.185, 'city': 'Gilbert', 'state': 'AZ'}, {'zip_code': '85225', 'distance': 19.748, 'city': 'Chandler', 'state': 'AZ'}, {'zip_code': '85217', 'distance': 19.996, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85212', 'distance': 13.478, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85299', 'distance': 16.319, 'city': 'Gilbert', 'state': 'AZ'}, {'zip_code': '85236', 'distance': 14.654, 'city': 'Higley', 'state': 'AZ'}, {'zip_code': '85296', 'distance': 15.819, 'city': 'Gilbert', 'state': 'AZ'}, {'zip_code': '85227', 'distance': 12.227, 'city': 'Chandler Heights', 'state': 'AZ'}, {'zip_code': '85218', 'distance': 14.859, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85233', 'distance': 17.287, 'city': 'Gilbert', 'state': 'AZ'}, {'zip_code': '85234', 'distance': 13.947, 'city': 'Gilbert', 'state': 'AZ'}, {'zip_code': '85209', 'distance': 10.025, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85202', 'distance': 19.335, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85274', 'distance': 19.066, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85210', 'distance': 17.409, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85214', 'distance': 14.304, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85216', 'distance': 11.681, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85204', 'distance': 14.374, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85206', 'distance': 11.254, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85219', 'distance': 10.365, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85118', 'distance': 15.16, 'city': 'Gold Canyon', 'state': 'AZ'}, {'zip_code': '85120', 'distance': 7.594, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85208', 'distance': 8.01, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85119', 'distance': 8.352, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85220', 'distance': 7.061, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85278', 'distance': 7.398, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85117', 'distance': 6.746, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85178', 'distance': 6.746, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85205', 'distance': 9.723, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85201', 'distance': 16.532, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85211', 'distance': 15.824, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85213', 'distance': 11.768, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85275', 'distance': 11.245, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85277', 'distance': 9.15, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85290', 'distance': 5.169, 'city': 'Apache Junction', 'state': 'AZ'}, {'zip_code': '85203', 'distance': 13.561, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85207', 'distance': 5.197, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85271', 'distance': 19.385, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85257', 'distance': 19.718, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85252', 'distance': 19.733, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85261', 'distance': 19.667, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85251', 'distance': 19.616, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85256', 'distance': 15.237, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85215', 'distance': 0, 'city': 'Mesa', 'state': 'AZ'}, {'zip_code': '85190', 'distance': 11.499, 'city': 'Tortilla Flat', 'state': 'AZ'}, {'zip_code': '85250', 'distance': 17.791, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85258', 'distance': 18.57, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85269', 'distance': 9.677, 'city': 'Fountain Hills', 'state': 'AZ'}, {'zip_code': '85259', 'distance': 14.594, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85268', 'distance': 11.462, 'city': 'Fountain Hills', 'state': 'AZ'}, {'zip_code': '85267', 'distance': 19.121, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85260', 'distance': 19.201, 'city': 'Scottsdale', 'state': 'AZ'}, {'zip_code': '85264', 'distance': 8.931, 'city': 'Fort Mcdowell', 'state': 'AZ'}, {'zip_code': '85255', 'distance': 17.667, 'city': 'Scottsdale', 'state': 'AZ'}]}

# 初始化空列表存储zip code
zipcodeList = []
# 遍历zip_codes对应的列表,每个元素是包含zip_code的字典
for item in zipcodeData["zip_codes"]:
    zipcodeList.append(item['zip_code'])

print(zipcodeList)

方式2:列表推导式(更简洁)

如果追求代码简洁,可以用Python的列表推导式一行完成:

zipcodeList = [item['zip_code'] for item in zipcodeData["zip_codes"]]
print(zipcodeList)

说明

两种方式都能正确提取所有zip_code字段的值到列表中,解决了原代码中的索引错误和列表构建逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:40:39