gpt4 book ai didi

python - 如何排列元组列表,以便删除与其他元组相比具有最高值的元组并返回最大值

转载 作者:太空狗 更新时间:2023-10-30 02:52:18 24 4
gpt4 key购买 nike

val = [(200, []), (300, [500, 200]), (400, [100, 200, 300]), (400, [])]
largest_val_arrangement(val)
[(200, []), (300, [500, 200]), (400, [100, 200, 300])]

所以现在 (400, []) 被弹出了,因为 (400, [100, 200, 300]) 的元素比它多。

最佳答案

您可以根据列表的长度使用排序,并使用字典,以便最后写入的键“获胜”。

然后转换回元组列表或...保留为dict:

val = [(200, []), (300, [500, 200]), (400, [100, 200, 300]), (400, [])]

def largest_val_arrangement(val):
return tuple({k:v for k,v in sorted(val, key = lambda t : len(t[1]))}.items())

largest_val_arrangement(val)

结果:

((200, []), (400, [100, 200, 300]), (300, [500, 200]))

这个方法,就像它使用的sort一样,有O(log(n)*n)的复杂度,(dictO(1) 平均复杂度)。

但单线并不总是最有效的解决方案。这里使用 sort 是不必要的,当一个带有标记字典的旧循环在 O(n) 中工作时:

def largest_val_arrangement(val):
d = dict()
for k,v in val:
if k not in d or len(d[k]) < len(v):
d[k] = v

return tuple(d.items())

关于python - 如何排列元组列表,以便删除与其他元组相比具有最高值的元组并返回最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53621470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com