如何用Python遍历嵌套列表并提取美国州名称
解决Python嵌套列表遍历提取州名的问题
首先看你的核心错误:循环里每次固定打印data[0](也就是表头行),所以重复输出了相同内容。正确的做法是遍历每个子列表,提取子列表的第一个元素,同时跳过开头的表头行。
修正后的代码
import requests # 修正URL:population后缺少?,否则API请求会失败 url = 'https://api.census.gov/data/2021/pep/population?get=NAME,POP_2020,POP_2021&for=state:*' response = requests.get(url) data = response.json() def get_state_names(): # 跳过第一个表头行,从索引1开始遍历所有州数据 for state_data in data[1:]: # 取每个子列表的第一个元素(州名) print(state_data[0]) # 调用函数 get_state_names()
预期输出
Oklahoma Nebraska Hawaii South Dakota Tennessee ...
进一步优化:返回州名列表
如果需要后续复用这些州名,建议让函数返回列表而非直接打印:
def get_state_names(): # 用列表推导式简洁提取所有州名 return [state_data[0] for state_data in data[1:]] state_names = get_state_names() print(state_names)
错误原因解析
你的原代码中for i in data:循环时,每次都访问data[0]——这是整个列表的第一个元素(表头),所以循环多少次就输出多少次表头。正确的逻辑是用循环变量(比如state_data)指代当前遍历到的子列表,再取该子列表的第一个元素state_data[0];同时因为第一个子列表是表头,不需要提取,所以从data[1:]开始遍历。
内容的提问来源于stack exchange,提问作者pklr35
相关产品推荐
相关产品推荐

