Python中如何按值≥0.05的条件随机选取字典的键?
问题描述
需要从以下字典中随机提取一个值≥0.05的键,赋值给startActivity,要求每次运行代码能随机得到符合条件的键:
{ 'Bed_to_Toilet': 0.5645161290322581, 'Sleep': 0.016129032258064516, 'Morning_Meds': 0.03225806451612903, 'Watch_TV': 0.0, 'Kitchen_Activity': 0.04838709677419355, 'Chores': 0.0, 'Leave_Home': 0.03225806451612903, 'Read': 0.0, 'Guest_Bathroom': 0.08064516129032258, 'Master_Bathroom': 0.22580645161290322 }
目前已实现随机选取字典键的功能,但未添加条件判断,现有代码如下:
def findFirstActivity(self, startActModel): startActivity, freq = random.choice(list(startActModel.items())) return startActivity
请问如何添加条件以实现需求?
解决方案
你可以先筛选出字典中所有值≥0.05的键值对,再从筛选结果里随机选取,修改后的代码如下:
import random def findFirstActivity(self, startActModel): # 筛选出值≥0.05的键值对 valid_items = [item for item in startActModel.items() if item[1] >= 0.05] # 从符合条件的结果中随机选择 startActivity, freq = random.choice(valid_items) return startActivity
说明
- 先用列表推导式遍历字典的
items(),只保留值≥0.05的键值对,得到valid_items列表; - 再对
valid_items使用random.choice()随机选取元素,确保每次拿到的都是符合条件的键。
如果需要处理字典中无符合条件键的情况,可以额外添加判断逻辑:
import random def findFirstActivity(self, startActModel): valid_items = [item for item in startActModel.items() if item[1] >= 0.05] if not valid_items: # 无符合条件键时的处理,比如返回None或抛出异常 return None startActivity, freq = random.choice(valid_items) return startActivity
内容的提问来源于stack exchange,提问作者accipigna
相关产品推荐
相关产品推荐

