如何从具有特定值的字典中获取N个随机密钥。字典看起来像这样:
d ={
't1':{
'text':'blabla',
'rating':'1'
},
't2':{
'text':'blabla',
'rating':'0'
},
't3':{
'text':'blabla',
'rating':'0'
},
't4':{
'text':'blabla',
'rating':'1'
},
't5':{
'text':'blabla',
'rating':'1'
}
}
例如,我想要d中的2个随机密钥,其中rating的值为1.
我想知道是否有一些更有效的方法,而不是获取值为0或1的所有键,将它们分开而不是选择随机键?像这样:
positives = dict((k,v) for k,v in d.items() if v["rating"] == 1)
negatives = dict((k,v) for k,v in d.items() if v["rating"] == 0)
random.sample(list(positives), n)
random.sample(list(negatives), n)
在此之后,我可以将它们放回一本字典中,但我想知道这是否可以更有效地完成。
答案 0 :(得分:0)
您可以从此代码中获取提示:
import random
d ={
't1':{
'text':'blabla',
'rating':'1'
},
't2':{
'text':'blabla',
'rating':'0'
},
't3':{
'text':'blabla',
'rating':'0'
},
't4':{
'text':'blabla',
'rating':'1'
},
't5':{
'text':'blabla',
'rating':'1'
}
}
def choice_value(value_1):
for_choice = []
for i, j in d.items():
if int(j['rating']) == value_1:
for_choice.append((i, d[i]))
return random.sample(for_choice, 2)
print(choice_value(1))
输出:#random
[('t1', {'text': 'blabla', 'rating': '1'}), ('t4', {'text': 'blabla', 'rating': '1'})]