簡體   English   中英

從字典中選擇隨機值

[英]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.choicecollections.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM