use*_*ser 5 python tuples list max min
从实验中我已经放松了,在一个平局的情况下,基于订单的python选择(例如列表中第一个进入的项目)是否有办法,在平局的情况下我可以随机选择一个项目,所以它不是确定性的并且基于秩序?
例如
l = [ ([1], 10) , ([2], 3), ([3], 9), ([4], 10)]
max(l, key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)
每次运行,都可以返回([4],10)或([1],10)而不是总是([1],10)
您可以为键值添加一点随机性:
max(l, key=lambda x: x[1] + random.random())
Run Code Online (Sandbox Code Playgroud)
或者更一般地说,如果您的键不仅仅是整数:
max(l, key=lambda x: (x[1], random.random()))
Run Code Online (Sandbox Code Playgroud)
您需要首先找到所有最大值,然后随机选择一个:
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))
Run Code Online (Sandbox Code Playgroud)