如何通过字符串片段访问对应变量?以Python体育DataFrame为例
高效映射运动名称到对应DataFrame的方案
方案一:读取文件时直接构建字典(推荐)
不用先逐个定义nfl_df这类变量,直接通过字典推导式一次性完成文件读取和映射,代码简洁且无冗余:
import pandas as pd sports = ['NFL', 'MLB', 'NBA', 'NHL'] # 字典的键是运动名称,值是对应的DataFrame sport_dfs = {sport: pd.read_csv(f'{sport.lower()}_data.csv') for sport in sports} # 遍历使用时直接通过键获取对应DataFrame for sport in sports: current_df = sport_dfs[sport] # 这里写你要对数据执行的操作,比如: # print(f"{sport}数据共有{len(current_df)}行")
方案二:动态获取已定义的变量
如果已经提前定义了nfl_df、nba_df这类变量,可以利用globals()函数动态根据字符串获取变量,但这种方式可读性稍弱,仅适合已有变量的场景:
# 假设已存在nfl_df、nba_df、mlb_df、nhl_df这些变量 for sport in sports: # 把运动名转成「小写+_df」的格式,比如NFL → nfl_df df_var_name = f"{sport.lower()}_df" current_df = globals()[df_var_name] # 执行后续操作
总结:方案一从源头避免了重复代码,结构更清晰,是更优的选择;方案二适合已有变量的遗留场景,但尽量少用,避免代码可读性下降。
内容的提问来源于stack exchange,提问作者AmirMohammad Shakeri
相关产品推荐
相关产品推荐

