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

Python:如何在for循环中为变量名添加迭代变量值(含Pandas场景)

这个需求我太熟悉了——刚开始用Pandas的时候我也想过直接给变量名加后缀来区分结果,但后来发现用字典管理才是更靠谱的方案,既整洁又方便后续调用。下面给你两种可行的实现方式,优先推荐第一种:

推荐方案:用字典存储结果

字典天生就是用来做键值对映射的,这里我们可以把每个唯一值i作为键,对应的a和b作为值,后续想调用哪个结果直接通过键就能找到,完全不用记一堆零散的变量名。

方式1:分开存储两个结果字典

如果需要单独管理a和b类型的结果,可以初始化两个空字典,循环时把结果分别存进去:

import pandas as pd

# 假设你的DataFrame和函数已经定义好
# df = pd.DataFrame(...)
# def func(sub_df): ...

# 初始化存储结果的字典
a_results = {}
b_results = {}

# 获取唯一值数组
unique_vals = df.col3.unique()

for val in unique_vals:
    # 筛选当前值对应的子DataFrame
    sub_df = df[df.col3 == val]
    # 调用函数得到两个结果
    current_a, current_b = func(sub_df)
    # 将结果存入字典,用当前唯一值作为键
    a_results[val] = current_a
    b_results[val] = current_b

之后要调用某个值对应的结果时,直接通过键访问就行,比如想取val=10对应的a结果,就用a_results[10],非常直观。

方式2:用一个字典存储结果元组

如果不想分开两个字典,也可以把每次的(a, b)作为元组存入同一个字典:

results = {}
for val in unique_vals:
    results[val] = func(df[df.col3 == val])

# 调用时,results[val][0]是a,results[val][1]是b
example_a = results[5][0]
example_b = results[5][1]
不推荐但可行:动态创建变量

如果你确实需要生成类似a_1、b_2这样的独立变量,可以通过globals()函数或者exec语句实现,但我强烈不建议这么做——零散的变量会让代码难以维护,后续调试也很麻烦:

for val in unique_vals:
    a, b = func(df[df.col3 == val])
    # 动态创建以val为后缀的变量
    globals()[f'a_{val}'] = a
    globals()[f'b_{val}'] = b

比如当val=3时,会生成a_3和b_3两个变量,但如果val是字符串或者特殊字符,可能会导致变量名无效,风险很高。

总之,优先选择字典的方式,这是Python里管理批量结果的标准做法,代码可读性和可维护性都高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:27:12