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

如何判断Python字典中不同键的项值是否相等并获取对应键列表?

问题1:如何判断同一Python字典中不同键对应的列表项是否相等?

单组键值比较

直接用Python的*==*运算符即可,列表的相等判断会逐一比对内部所有元素的顺序和值:

my_dict = {"a": [1,2,3], "b": [1,2,3], "c": [1,3,2]}
# 判断a和b对应的列表是否相等
print(my_dict["a"] == my_dict["b"])  # 输出True
# 判断a和c对应的列表是否相等
print(my_dict["a"] == my_dict["c"])  # 输出False

批量检查所有相等的列表对应的键

如果要找出所有对应列表相等的键组,可将列表转为可哈希的元组作为新字典的键,收集对应的原字典键:

from collections import defaultdict

my_dict = {"a": [1,2,3], "b": [1,2,3], "c": [1,3,2], "d": [1,2,3]}
grouped = defaultdict(list)
for key, lst in my_dict.items():
    grouped[tuple(lst)].append(key)

# 输出所有对应列表相等的键列表
for lst_tuple, keys in grouped.items():
    if len(keys) > 1:
        print(f"列表{list(lst_tuple)}对应的键:{keys}")
# 输出:列表[1, 2, 3]对应的键:['a', 'b', 'd']
问题2:获取defaultdict中值相同的所有user键列表

假设你的final字典结构是键为user标识,值为(sat, color)元组,按元组值分组收集user的实现如下:

from collections import defaultdict

# 示例数据
final = defaultdict(tuple)
final["user1"] = (90, "red")
final["user2"] = (80, "blue")
final["user3"] = (90, "red")
final["user4"] = (80, "blue")

# 反转字典,用元组值作为键存储对应user列表
user_groups = defaultdict(list)
for user, (sat, color) in final.items():
    user_groups[(sat, color)].append(user)

# 输出分组结果
for value, users in user_groups.items():
    print(f"值{value}对应的user列表:{users}")
# 输出:
# 值(90, 'red')对应的user列表:['user1', 'user3']
# 值(80, 'blue')对应的user列表:['user2', 'user4']

说明

元组是可哈希类型,能直接作为字典的键,遍历原字典时将user添加到对应元组值的列表中,即可得到所有值相同的user集合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:18:43