我有一个类似
的列表key_list=[(2, 'just', 'sd'), (2, 'great', 'sd'), (1, 'just great', 'sd')]
我想为每个元素在列表的0索引处选择最大值,例如这里的最大值是2,但是当不同集合中的同一值有两个最大值时,它会随机返回一个元素,例如(2, 'just', 'sd')
和(2, 'great', 'sd')
的最大值为2,并返回其中任意一个。
我写了
max([i[0] for i in list_keys])
获得最大值,但不知道如何基于此'2'选择随机值
答案 0 :(得分:1)
您可以通过两种方式执行此操作:
(1)从与最大值匹配的条目中随机选择:
import random
key_list=[(2, 'just', 'sd'), (2, 'great', 'sd'), (1, 'just great', 'sd')]
m = max(i[0] for i in key_list)
print(random.choice([i for i in key_list if i[0] == m]))
(2)使用特殊的按键功能来应用随机的决胜局:
print(max(key_list, key=lambda i: i[0] + random.random()))
# or
print(max(key_list, key=lambda i: (i[0], random.random())))
答案 1 :(得分:0)
import random
key_list = [
(2, 'just', 'sd'),
(2, 'great', 'sd'),
(1, 'just great', 'sd')
]
max_value = max([key[0] for key in key_list])
max_keys = [key for key in key_list if key[0] == max_value]
print(random.choice(max_keys))
答案 2 :(得分:0)
您可以先找到最大值,然后在包含该最大值的元组中随机选择:
import random
key_list=[(2, 'just', 'sd'), (2, 'great', 'sd'), (1, 'just great', 'sd')]
maxi = max(t[0] for t in key_list)
out = random.choice([t for t in key_list if t[0]==maxi])
print(out)
# (2, 'just', 'sd')