如何从Python字典中获取值唯一的随机Top3键值对
实现字典按值去重随机取前三大项的方法
实现思路是先将字典元素按值分组,将相同值对应的所有键归为一组,再对去重后的值降序排序,每个值对应的键组中随机选取一个键,最后取前三组即可实现需求。
完整可运行代码
import random dict1 = {'apple':50,'banana':20,'orange':50,'peach':20, 'mango':10} # 按值对键分组 value_groups = {} for key, val in dict1.items(): if val not in value_groups: value_groups[val] = [] value_groups[val].append(key) # 对值降序排序,每个值分组随机选1个键,取前三组 sorted_values = sorted(value_groups.keys(), reverse=True) result = [(random.choice(value_groups[val]), val) for val in sorted_values[:3]] print(result)
代码说明
- 分组步骤会把所有相同值的键放到同一个列表中,避免后续出现同值的重复项
sorted(value_groups.keys(), reverse=True)仅对去重后的值排序,保证每个数值最多只出现一次random.choice(value_groups[val])实现了同值项的随机选择效果,符合同值项随机保留一个的要求- 最终输出的结果会随机出现
[('apple', 50), ('banana', 20), ('mango', 10)]或[('orange', 50), ('peach', 20), ('mango', 10)]等符合要求的形式
内容的提问来源于stack exchange,提问作者Iwishworldpeace
相关产品推荐
相关产品推荐

