Python FOR循环中生成的列表无法在循环外访问如何解决
问题原因
- 你在循环里使用的
i是单次循环的临时变量,每次循环都会被新值覆盖,循环结束后只会保留最后一次循环的赋值结果,不会留存所有板块的对应列表 - 你没有将循环内生成的各板块列表存入循环外的全局容器,自然无法在循环结束后调用不同板块的分类结果
修复代码
推荐用字典存储分类结果,键为板块名称,值为对应板块的股票代码列表,调用更方便:
import pandas as pd data = pd.read_csv('https://datahub.io/core/s-and-p-500-companies/r/constituents.csv') # 初始化存储分类结果的字典 sector_symbol_map = {} # 获取所有去重后的板块 sectors = set(data['Sector']) for sector in sectors: # 筛选对应板块的股票代码 symbol_list = list(data.loc[data['Sector'] == sector, 'Symbol']) # 存入字典 sector_symbol_map[sector] = symbol_list # 打印验证 print(f"{sector}板块的股票代码:{symbol_list}") # 循环外调用示例:获取信息技术板块的股票代码 print(sector_symbol_map['Information Technology'])
额外优化说明
你也可以直接用pandas自带的分组方法实现,代码更简洁:
sector_symbol_map = data.groupby('Sector')['Symbol'].apply(list).to_dict()
内容的提问来源于stack exchange,提问作者batrick_pateman
相关产品推荐
相关产品推荐

