从实验中我已经解释说,当遇到平局时, 基于订单的python选择(例如列表中第一个出现的项目) 有没有办法,在平局的情况下,我可以随机选择一个项目,以便它不是确定性的并且基于订单?
e.g。
l = [ ([1], 10) , ([2], 3), ([3], 9), ([4], 10)]
max(l, key=lambda x: x[1])
每次运行,都可以返回([4],10)或([1],10) 并不总是([1],10)
答案 0 :(得分:5)
在选择最大值之前随机播放列表:
import random
random.shuffle(l)
答案 1 :(得分:4)
您需要先找到所有最大值,然后随机选择一个:
from operator import itemgetter
from random import choice
l = [([1], 10) , ([2], 3), ([3], 9), ([4], 10)]
mx = max(l, key=itemgetter(1))
all_maxes = [ele for ele in l if ele[1] == mx[1]]
print(choice(all_maxes))
答案 2 :(得分:3)
您可以为键值添加一点随机性:
max(l, key=lambda x: x[1] + random.random())
或者更一般地说,如果您的密钥不仅仅是整数:
max(l, key=lambda x: (x[1], random.random()))