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

Python3字典去重:保留值对应的首个字母序键

按值去重并保留字母序最靠前的键

假设存在如下Python字典:

full_dic = {
  'aa': 1,
  'ac': 1,
  'ab': 1,
  'ba': 2,
  ...
}

我之前使用标准字典推导式实现去重:

t = {val : key for (key, val) in full_dic.items()}
cleaned_dic = {val : key for (key, val) in t.items()}

调用print(cleaned_dic)会输出{'ab': 1,'ba': 2, ...}。这种方法看似总是保留最后一个键,但由于字典本身无序,结果完全无法保证。我需要一种能确保保留字母序最靠前的键的方法,无论原字典的“顺序”如何,最终输出应为:

>> {'aa': 1,'ba': 2, ...}

其中'aa'是对应值1的所有键中字母序最靠前的那个。


我针对3种解决方案进行了计时测试(测试字典由随机键值对生成):

dict length:  10
# of loops:  100000
HoliSimo (OrderedDict): 0.0000098405 seconds
Ricardo: 0.0000115448 seconds
Mark (itertools.groupby): 0.0000111745 seconds

dict length:  1000000
# of loops:  10
HoliSimo (OrderedDict): 6.1724137300 seconds
Ricardo: 3.3102091300 seconds
Mark (itertools.groupby): 6.1338266200 seconds

可见:针对小型字典,使用OrderedDict的方案速度最快;针对大型字典,Ricardo的方案表现更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:31:10