[英]Selecting random values from dictionary
假設我有這本詞典:
dict = {'a': 100, 'b': 5, 'c': 150, 'd': 60};
我得到了這個代碼具有最大價值的密鑰:
most_similar = max(dic.iteritems(), key=operator.itemgetter(1))[0]
它返回'c'
但我想從前3個最大值中選擇一個隨機密鑰。 根據這本詞典,前三名是:
c
a
d
它應該從中隨機選擇一個鍵。 我怎樣才能做到這一點?
如果你想找到前3個鍵,然后隨機獲得其中一個鍵,那么我建議使用random.choice
和collections.Counter
,就像這樣
>>> d = {'a': 100, 'b': 5, 'c': 150, 'd': 60}
>>> from collections import Counter
>>> from random import choice
>>> choice(Counter(d).most_common(3))[0]
'c'
Counter(d).most_common(3)
將根據傳遞給它的字典對象的值從字典中獲取前三個值,然后我們隨機選擇一個返回的值並僅返回其中的鍵。
獲取具有三個最大值的鍵。
>>> import heapq
>>> d = {'a': 100, 'b': 5, 'c': 150, 'd': 60}
>>> largest = heapq.nlargest(3, d, key=d.__getitem__)
>>> largest
['c', 'a', 'd']
然后隨機選擇其中一個:
>>> import random
>>> random.choice(largest)
'c'
按降序對字典排序,從結果list
獲取前三個對象,然后使用random.choice
:
>>> import random
>>> d = {'a': 100, 'b': 5, 'c': 150, 'd': 60}
>>> random.choice(sorted(d, reverse=True, key=d.get)[:3])
'c'
並且不要把它稱為dict
否則你將掩蓋內置的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.