2012-04-12 10 views
9

tengo un diccionario de esta manera:cómo elegir al azar varias claves y su valor en una pitón diccionario

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) 

Ahora quiero elegir al azar 10 usuarios y hacer algo de computo como

1. calculate number of videoid for each user. 
2. sum up the number of requests for these 10 random users, etc 

entonces necesito aumentar el número aleatorio a 20, 30, 40 respectivamente

Pero "random.choice" solo puede elegir un valor a la vez, ¿verdad? cómo elegir varias teclas y la lista que sigue a cada tecla?

Respuesta

17

Eso es lo random.sample() es para:

Return a k length list of unique elements chosen from the population sequence. Used for random sampling without replacement.

Esto puede ser usado para elegir las teclas. Los valores posteriormente pueden ser recuperados por la normalidad búsqueda de diccionario:

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

Alternativamente, se puede degustar directamente de d.items().

+0

Si quiere obtener las claves y los valores, puede usar '' random.sample() '' en '' dict.items() '', en lugar de obtener una clave y luego hacer una búsqueda. –

+1

necesita la lista (d) o obtendrá este error raise TypeError ("La población debe ser una secuencia o conjunto. Para los dicts, use list (d).") TypeError: La población debe ser una secuencia o conjunto. Para los dictados, use la lista (d). –

Cuestiones relacionadas