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

如何将Pandas DataFrame转换为以多列列表为键的字典?

将Pandas DataFrame转换为以组合键为索引的字典

问题背景

给定如下结构的DataFrame:

import pandas as pd

df = pd.DataFrame({
    'col1': ['A', 'B', 'C'],
    'col2': ['X', 'Y', 'Z'],
    'col3': [1, 2, 3]
})

需要转换为以col1和col2的组合为键、col3为值的字典。注意:Python中列表是不可哈希类型,不能直接作为字典的键,因此实际实现中会用元组(可哈希)作为等效替代,最终逻辑与需求完全匹配。


实现方案

方案1:使用set_index + to_dict(推荐)

这是最简洁高效的方法,利用Pandas内置方法完成转换:

# 将col1和col2设为复合索引,再转换为字典
result = df.set_index(['col1', 'col2'])['col3'].to_dict()

执行后得到的结果:

{('A', 'X'): 1, ('B', 'Y'): 2, ('C', 'Z'): 3}

访问值时直接使用元组键:result[('A', 'X')]即可得到1。

方案2:遍历DataFrame构造字典

如果需要更灵活的控制,可以手动遍历每一行构造字典:

result = {}
for _, row in df.iterrows():
    # 用元组作为键
    key = (row['col1'], row['col2'])
    result[key] = row['col3']

得到的结果与方案1完全一致。


关于“列表作为键”的说明

如果你的需求只是输出格式看起来像列表,而非实际用列表作为键(这在Python中不允许),可以将元组转换为字符串作为键,但这种方式不推荐,会增加后续访问的复杂度:

result = {str([row['col1'], row['col2']]): row['col3'] for _, row in df.iterrows()}

得到的结果:

{"['A', 'X']": 1, "['B', 'Y']": 2, "['C', 'Z']": 3}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:24:28