从字典中提取n个具有特定值的随机键

2024-04-27 03:19:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从具有特定值的字典中获取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)

之后,我可以把它们放在一本字典里,但我想知道这是否可以做得更有效


Tags: sampletextinforif字典itemsrandom
1条回答
网友
1楼 · 发布于 2024-04-27 03:19:20

您可以从以下代码中得到提示:

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))

输出:#随机

[('t1', {'text': 'blabla', 'rating': '1'}), ('t4', {'text': 'blabla', 'rating': '1'})]

相关问题 更多 >