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

Python如何通过for循环遍历变量对合并字典减少代码冗余

实现方案

你提到的df1/df2/df3实际为Pandas的DataFrame对象(普通Python字典无merge方法),可以通过itertools.combinations生成无重复的两两组合,再循环执行合并、长度统计逻辑即可,代码如下:

from itertools import combinations

final_dict = {}
# 存储所有待处理的DataFrame及对应名称
df_list = [
    ("df1", df1),
    ("df2", df2),
    ("df3", df3)
]
# 遍历所有唯一两两组合
for (name_x, df_x), (name_y, df_y) in combinations(df_list, r=2):
    # 生成字典键
    dict_key = f"{name_x}_{name_y}"
    # 执行合并,注意on参数需要传入单个列名组成的列表,不要把多个列名写在同一个字符串里
    merged_res = df_x.merge(df_y, on=["column_name1", "column_name2", "column_name3"])
    # 存储长度到结果字典
    final_dict[dict_key] = len(merged_res)

说明

  • combinations生成的是不考虑顺序的无重复组合,不会出现df2_df1这类和df1_df2重复的配对,完全符合你的需求
  • 如果后续需要新增更多DataFrame处理,只需要往df_list里添加(新df名称字符串, 新df对象)的元组即可,无需修改其他逻辑
  • 注意你原有代码中on参数的写法错误:["column_name1, column_name2, column_name3"]是把三个列名当做一个列名处理,执行时会报找不到列的错误,需要修改为示例中的写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:54:05