我想返回字典中具有最高值的键,如果有平局,可以随机选择其中之一。我知道如何获得最大值,但不知道如何打破平局。
max(result,key = result.get)
这为我带来了最大值,但是如果字典有平局,那么它只会给我带来的第一个
给出字典{'banana': 3,'apple': 2,'cherry': 1,'orange': 3}
输出必须为banana
或orange
,但必须是随机的。
我想返回字典中具有最高值的键,如果有平局,可以随机选择其中之一。我知道如何获得最大值,但不知道如何打破平局。
max(result,key = result.get)
这为我带来了最大值,但是如果字典有平局,那么它只会给我带来的第一个
给出字典{'banana': 3,'apple': 2,'cherry': 1,'orange': 3}
输出必须为banana
或orange
,但必须是随机的。
首先从字典中获取 <?php
echo FileInput::widget([
'name' => 'file_attachment','attribute' => 'file_attachment','options' => ['multiple' => true]
]);
?>
值
max
然后使用List Comprehensions将所有具有最大值的密钥收集到import random
maxValue = max(result.values())
list
现在从keys = [key for key,value in result.items() if value == maxValue]
中获取随机值
keys
,
您可以构建反字典:
import random
d = {'banana': 3,'apple': 2,'cherry': 1,'orange': 3}
d_inv = dict.fromkeys(d.values())
for dkey,dval in d.items():
d_inv.setdefault(dval,list())
d_inv[dval].append(dkey)
m = max(d.values())
print(random.choice(d_inv[m]))
,
您可以使用groupby
+ choice
:
from itertools import groupby
import random
d = {'banana': 3,'apple': 12,'orange': 12}
print(random.choice(max(((k,list(g)) for k,g in groupby(sorted(d,key=d.get),key=d.get)),key=lambda x: x[0])[1]))
,
您可以使用list comprehension
,max
和random
函数:
import random
data = {'banana': 3,'orange': 3}
result = [i for i,v in data.items() if v == max(data.values())]
print (random.choice(result))
# With simple for loop and if condition
result_1 = []
for i,v in data.items():
if v == max(data.values()):
result_1.append(i)
print (random.choice(result_1))
我希望这对您有所帮助!
,虽然你不能打乱字典中的条目,但你可以用键构建一个列表,打乱它们,然后应用 max 函数:
import random
result = {'banana': 3,'orange': 3}
keys = list(result.keys())
random.shuffle(keys)
print(max(keys,key=lambda k: result[k]))
max 和 shuffle 都是快速函数。