我有一个元组列表:
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
,随机选择一个元素
关于python - 获取数字元素最大的元组,如果出现平局,则随机选择平局元组之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52023786/