我有一个元组列表:
a = [([4, 7, 9], [3], 5.5), ([2, 5, 8], [3], 5.5), ([2, 5, 8], [9], 4.5)]
我想获得具有最大数字元素的元组(非列表,例如 ([4, 7, 9], [3], 5.5) 中的 5.5
, 和 如果有平局,例如 ([4, 7, 9], [3], 5.5)
和 ([2, 5 , 8], [3], 5.5)
,将随机选择这些绑定(bind)元组之一作为输出。
到目前为止我的进步:
>>> import operator
>>> max(a, key = operator.itemgetter(1))
([3], [4, 7, 9], 5.5)
我不确定此时我如何随机选择一个绑定(bind)的元组。一些见解会很棒!
备注:要在每次运行 choice(.)
函数时都有不同的选择,请使用种子并执行:
r = random.Random(500) # seed number is arbitrary
r.choice(...)
解决方案:
m=max(a,key=lambda x: x[2])[2]
print(choice([i for i in a if i[2] == m]))
示例:
from random import choice
a = [([4, 7, 9], [3], 5.5), ([2, 5, 8], [3], 5.5), ([2, 5, 8], [9], 4.5)]
m=max(a,key=lambda x: x[2])[2]
print(choice([i for i in a if i[2] == m]))
解释:
遍历列表,然后取第三个(python 索引中为 2)的元素,然后根据第三个索引(python 索引中的第二个)的最大元素检查它,如果相同,则将其放入列出,否则,否
使用 random.choice
(在我的例子中,因为我 from .. import ..
使用直接 choice
,随机选择一个元素
我是一名优秀的程序员,十分优秀!