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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:45:20