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

如何用一行Python字典推导式实现字典键值反转聚合?

一行代码实现字典反转(值转键,原键分组为列表)

嘿,这个需求挺典型的!要把原字典的值作为新字典的键,原字典中对应相同值的键合并成列表作为新字典的值,用一行字典推导式就能搞定,不过得先把相同值的键归好类:

original_dict = {"cat": 1, "dog": 1, "person": 2, "bear": 2, "bird": 3}
new_dict = {v: [k for k, val in original_dict.items() if val == v] for v in set(original_dict.values())}

代码解释:

  • 先通过set(original_dict.values())获取原字典里所有唯一的值,这些就是新字典的键;
  • 对于每个唯一值v,用列表推导式[k for k, val in original_dict.items() if val == v]找出原字典中所有值等于v的键,把它们组成列表作为v对应的值;
  • 整个表达式就是一个字典推导式,直接生成目标字典。

如果你的数据量比较大,上面的方法因为要多次遍历原字典,效率会稍低,这时候可以用collections.defaultdict写一行(虽然严格来说是两行,不过导入可以合并进去):

from collections import defaultdict; original_dict = {"cat":1,"dog":1,"person":2,"bear":2,"bird":3}; new_dict = dict(defaultdict(list, {_: new_dict[v].append(k) for k,v in original_dict.items()}))

不过这种写法可读性稍差,小数据量的话还是第一种方法更直观好用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:08:39