2012-04-12 17 views
9

Mam słownika takiego:Jak losowo wybrać wiele kluczy i wartości pytona słowniku

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) 

Teraz chcę losowo wybierać 10 użytkowników i zrobić kilka obliczeń jak

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

następnie muszę zwiększyć liczbę losową do 20, 30, 40 odpowiednio

Ale "random.choice" może wybrać tylko jedną wartość na raz, prawda? jak wybrać wiele kluczy i listę po każdym kluczu?

Odpowiedz

17

To co random.sample() jest dla:

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

ten może być używany do wyboru klawiszy. Wartości te mogą być następnie pobierane przez normalnego słowniku odnośnika:

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

Alternatywnie, można spróbować bezpośrednio od d.items().

+0

Jeśli chcesz uzyskać klucze i wartości, możesz po prostu użyć '' random.sample() '' na '' dict.items() '', zamiast uzyskać klucz, a następnie przeprowadzić wyszukiwanie. –

+1

potrzebujesz listy (d) lub otrzymasz ten błąd Podnieś TypeError ("Populacja musi być sekwencją lub zbiorem Dla dykt, użyj listy (d).") TypeError: Populacja musi być sekwencją lub zbiorem. W przypadku dyktów użyj listy (d). –

Powiązane problemy