我有这样的字典:
user_dict = {
user1: [(video1, 10),(video2,20),(video3,1)]
user2: [(video1, 4),(video2,8),(video6,45)]
...
user100: [(video1, 46),(video2,34),(video6,4)]
}
(video1,10) means (videoid, number of request)
现在我想随机选择10个用户并进行一些计算,如
1. calculate number of videoid for each user.
2. sum up the number of requests for these 10 random users, etc
然后我需要将随机数分别增加到20,30,40
但是“random.choice”一次只能选择一个值,对吧?如何选择多个键和每个键后面的列表?
答案 0 :(得分:24)
这就是random.sample()
的用途:
返回从总体序列中选择的k长度的唯一元素列表。用于无需替换的随机抽样。
这可用于选择键。随后可以通过常规字典查找来检索这些值:
>>> d = dict.fromkeys(range(100))
>>> keys = random.sample(list(d), 10)
>>> keys
[52, 3, 10, 92, 86, 42, 99, 73, 56, 23]
>>> values = [d[k] for k in keys]
或者,您可以直接从d.items()
进行抽样。
答案 1 :(得分:1)
简单
import random
>>> mydict = {"a":"its a", "b":"its b"}
>>> random.sample(mydict,1)
its a
答案 2 :(得分:0)
我正在解决这个问题,
import random
def random_a_dict_and_sample_it( a_dictionary , a_number ):
_ = {}
for k1 in random.sample( list( a_dictionary.keys() ) , a_number ):
_[ k1 ] = a_dictionary[ k1 ]
return _
您的情况:
user_dict = random_a_dict_and_sample_it( user_dict , 2 )
答案 3 :(得分:0)
如果你想返回一个字典,你可以像这样在 Sven Marnach's answer 中使用字典理解而不是列表理解:
d = dict.fromkeys(range(100))
keys = random.sample(d.keys(), 10)
sample_d = {k: d[k] for k in keys}