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

如何仅根据元组键的部分匹配条件提取Python字典的对应值

注意你给出的示例字典存在重复的二元组键,Python字典要求键唯一,重复键会直接覆盖之前的赋值,要得到你预期的[2, 4, 6]输出,需要先修正重复键问题,有效字典结构参考如下:

d = {
    (1, 'first'): [1],
    (1, 'second'): [2],
    (2, 'second'): [4],
    (2, 'first'): [5],
    (3, 'second'): [6]
}

原生Python最简实现

Python本身没有内置类似pandas .loc的索引语法,用列表推导式一行就能完成筛选,写法非常简洁:

res = [v[0] for k, v in d.items() if 'second' in k]

运行后res的值就是你需要的[2, 4, 6]。如果你的字典值不一定是单元素列表,去掉代码里的[0]即可保留原列表结构。

封装类loc的通用筛选方法

如果你需要频繁做这类键筛选,可以封装一个简单的辅助函数,用法和.loc非常接近:

def dict_loc(d, filter_func):
    return [v[0] for k, v in d.items() if filter_func(k)]

# 调用时直接传入筛选条件即可
res = dict_loc(d, lambda key: 'second' in key)

直接用pandas .loc实现

如果你习惯了pandas的用法,可以把字典转成MultiIndex的Series,直接用原生的.loc筛选:

import pandas as pd

# 构造MultiIndex Series
s = pd.Series([v[0] for v in d.values()], index=pd.MultiIndex.from_tuples(d.keys()))
# 用loc筛选二级索引为second的所有值
res = s.loc[:, "second"].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:36:03