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

如何找出Python字典中值(列表)相同的键的分组

按值分组字典中的键

给定如下Python字典,我们需要把值(列表)相同的键进行分组,忽略只有单个键对应的值,最终返回分组后的列表:

example_dict = {'list_1': [1, 2, 'x'], 'list_2':[1, 3, 'x'], 'list_3' : [1, 2, 'x'], 'list_4': [1, 2, 'd'], 'list_5': [1, 3, 'x'] }

预期输出:

[['list_1', 'list_3'], ['list_2','list_5']]

解决方法

核心思路是利用字典键的可哈希特性,把不可哈希的列表转换成元组作为分组依据,再收集对应的原字典键:

  1. 导入collections.defaultdict简化分组操作;
  2. 遍历原字典,将每个值(列表)转为元组作为分组键,把对应的原字典键加入该键的列表中;
  3. 过滤掉仅包含单个键的分组,得到最终结果。

完整代码

from collections import defaultdict

example_dict = {'list_1': [1, 2, 'x'], 'list_2':[1, 3, 'x'], 'list_3' : [1, 2, 'x'], 'list_4': [1, 2, 'd'], 'list_5': [1, 3, 'x'] }

grouped = defaultdict(list)
for key, val in example_dict.items():
    # 列表转元组,生成可哈希的分组键
    grouped[tuple(val)].append(key)

# 仅保留包含多个键的分组
result = [g for g in grouped.values() if len(g) > 1]

print(result)

运行后即可得到符合预期的分组结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:57:28