在Python中使用特定条件随机检索字典中的值

uqjltbpv  于 2023-01-04  发布在  Python
关注(0)|答案(2)|浏览(104)

我想从字典中提取一个值〉= 0.05的键。

{'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}

我希望startActivity是这些键中的一个随机名字,比如我第一次运行代码时是startActivity = Bed_to_Toilet,第二次是startActivity = Guest_Bathroom,以此类推,我该怎么做呢?
我试过这么做

def findFirstActivity(self, startActModel):
   startActivity, freq = random.choice(list(startActModel.items()))
   return startActivity

而且效果很好,我只需要一种方法来添加一个条件。

33qvvth1

33qvvth11#

首先,获取符合您的条件的引用键列表:

candidate_list = [k for k,v in startActModel.items() if v >= 0.05]

然后您可以从该列表中random.choice

mykey = random.choice(candidate_list)

此时,如果需要,您可以返回并访问所选的值:

myval = startActModel[mykey]
bweufnob

bweufnob2#

如果你想保持你的API不变,你可以传递给findFirstActivity()一个你的dict的过滤版本。

filtered_startActModel = {k:v for k, v in d.items() if v >= 0.05}

相关问题