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

如何按ProjectID获取两张表中编程语言与框架的所有组合?

按ProjectID生成编程语言与框架的所有组合解决方案

核心思路

先将两个CSV表中的数据按ProjectID分组,分别收集每个项目对应的编程语言ID列表和框架ID列表;然后对每个同时存在于两个表中的ProjectID,用itertools.product生成语言与框架的笛卡尔积(即所有可能的组合),最后按要求格式输出。


方法一:使用Pandas处理(适合数据量较大或需要复杂数据操作的场景)

import pandas as pd
import itertools

# 读取两个CSV文件
lang_df = pd.read_csv('编程语言表.csv')
framework_df = pd.read_csv('框架表.csv')

# 按ProjectID分组,提取对应ID列表并转为字典
lang_groups = lang_df.groupby('ProjectID')['ProgrammingLanguageID'].apply(list).to_dict()
framework_groups = framework_df.groupby('ProjectID')['FrameworkID'].apply(list).to_dict()

# 遍历所有同时有语言和框架数据的项目
common_project_ids = set(lang_groups.keys()) & set(framework_groups.keys())
for project_id in common_project_ids:
    # 获取当前项目的语言和框架列表
    lang_ids = lang_groups[project_id]
    framework_ids = framework_groups[project_id]
    # 生成所有组合并格式化输出
    for lang_id, fw_id in itertools.product(lang_ids, framework_ids):
        print(f'(p{lang_id}, f{fw_id})')

方法二:使用标准库CSV模块处理(无需额外安装依赖)

import csv
import itertools

# 读取编程语言表并按ProjectID分组
lang_data = {}
with open('编程语言表.csv', 'r', newline='', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        project_id = int(row['ProjectID'])
        lang_id = int(row['ProgrammingLanguageID'])
        lang_data.setdefault(project_id, []).append(lang_id)

# 读取框架表并按ProjectID分组
framework_data = {}
with open('框架表.csv', 'r', newline='', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        project_id = int(row['ProjectID'])
        fw_id = int(row['FrameworkID'])
        framework_data.setdefault(project_id, []).append(fw_id)

# 生成并输出所有组合
common_project_ids = set(lang_data.keys()) & set(framework_data.keys())
for project_id in common_project_ids:
    for lang_id, fw_id in itertools.product(lang_data[project_id], framework_data[project_id]):
        print(f'(p{lang_id}, f{fw_id})')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:01:46