python - 获取数字元素最大的元组,如果出现平局,则随机选择平局元组之一

标签 python python-3.x list random tuples

我有一个元组列表:

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]))

说明:

  1. 遍历列表,然后取出第三个索引(Python 索引中的 2)的元素,然后对照第三个索引(Python 索引中的第二个)的最大元素进行检查,如果相同,则将其放入列出,否则,否

  2. 使用random.choice(在我的例子中,因为我from .. import ..使用直接choice,随机选择一个元素

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

相关文章:

python - 废弃发电机持有的资源会怎样?

带有异步 def 的 python asyncio add_done_callback

python - 在为 DataFrame 系列创建类别时如何从 QCUT 中获取整数

python - 是否可以预编译(预构建/预安装)Python C/C++ 扩展?

python - 如何使用numpy在Python中删除包含特定字符串的行?

list - 从F#中的列表中删除Nans

c# - 使用 ToArray() 将列表转换为数组

list - F#函数查找列表的所有旋转

用于搜索输入的 Python 搜索字典键

python - 如果 Google App Engine cron 作业有 10 分钟的限制,那么为什么我会在正常的 30 秒后收到 DeadlineExceededError?