如何实现字典值相等选元素更少的元组键,不等选最大值?
解决方案
要实现你的需求,只需要给max()函数的key参数设置复合排序规则即可,一次判断就能同时处理两种场景:
max_count_dict = {(2,4):1, (4,):1} # 核心代码:先按值降序,值相等则按元组长度升序 max_count_key = max(max_count_dict, key=lambda k: (-max_count_dict[k], len(k))) print(max_count_key) # 输出:(4,)
逻辑说明
-max_count_dict[k]:将字典的值取负,让max()在比较时,值越大的键优先级越高(比如值3对应的-3比2对应的-2大,会被优先选中);len(k):当多个键的值相等时,max()会自动比较元组的长度,长度越小的元组会被选中。
验证值不相等的场景
如果字典里的值有差异,会优先返回值最大的键:
max_count_dict = {(2,4):3, (4,):1, (1,3,5):2} max_count_key = max(max_count_dict, key=lambda k: (-max_count_dict[k], len(k))) print(max_count_key) # 输出:(2,4)
内容的提问来源于stack exchange,提问作者Faren
相关产品推荐
相关产品推荐

