如何使用random.choice()从字典中排除指定选项进行随机选择?
解决方法:用random.choice()忽略字典中的指定元素
当然可以实现!你只需要在给random.choice()传参前,先把不需要的元素从候选列表里过滤掉就行,完全不用改动choice()本身的逻辑。这里给你两种常用的实现方式:
方法一:过滤字典的键(推荐,匹配你原本的需求)
直接生成一个排除掉键0的键列表,再传入choice():
from random import choice mutationMarkers = {0: "original", 1: "point_mutation", 2: "frameshift_insertion", 3: "frameshift_deletion", 4: "copy_number_addition", 5: "copy_number_subtraction"} # 生成排除键0的候选键列表 candidate_keys = [key for key in mutationMarkers.keys() if key != 0] selected_key = choice(candidate_keys) print(selected_key) # 只会输出1、2、3、4、5中的一个
方法二:直接过滤字典的值
如果你最终需要的是值而不是键,也可以直接生成排除"original"的取值列表:
from random import choice mutationMarkers = {0: "original", 1: "point_mutation", 2: "frameshift_insertion", 3: "frameshift_deletion", 4: "copy_number_addition", 5: "copy_number_subtraction"} # 生成排除"original"的候选值列表 candidate_values = [val for val in mutationMarkers.values() if val != "original"] selected_value = choice(candidate_values) print(selected_value) # 只会输出除"original"外的其他值
额外小技巧:灵活配置排除项
如果以后需要排除的元素可能变化,把排除项存成变量会更方便维护:
exclude_key = 0 candidate_keys = [key for key in mutationMarkers.keys() if key != exclude_key]
这样不管你要排除哪个键,只需要修改exclude_key的值就行啦!
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

