gpt4 book ai didi

python - 对具有多个条件的元组进行排序

转载 作者:行者123 更新时间:2023-11-28 21:37:19 24 4
gpt4 key购买 nike

例如,我有一个元组:

 m = [(5,1),(3,7),(5,7),(6,2),(8,2),(3,6),(5,3),(8,2)]

我想将此元组排序为这样的元组:

 m_sorted = [(8, 2), (8, 2), (6, 2), (5, 1), (5, 3), (5, 7), (3, 6),
(3, 7)]

首先我这样做:

m =  sorted(m,reverse=True)

=> m = [(8, 2), (8, 2), (6, 2), (5, 7), (5, 3), (5, 1), (3, 7), (3, 6)]

但在那之后我陷入困境,我不知道下一步该做什么。条件是如果它们重复排序升序第二个元素,则对元组中的第一个元素进行降序排序。

最佳答案

这是一种方法。这假设您要按第一个元素(递减)和第二个元素(递增)进行排序。

m = [(5,1),(3,7),(5,7),(6,2),(8,2),(3,6),(5,3),(8,2)]

res = sorted(m, key=lambda x: (-x[0], x[1]))

# [(8, 2), (8, 2), (6, 2), (5, 1), (5, 3), (5, 7), (3, 6), (3, 7)]

这利用了 2 个属性:

  1. sorted 有一个 key 参数,它接受匿名 lambda 函数。
  2. 在 Python 中,元组和列表按元素顺序排序。

请注意,由于排序是稳定的,因此您可以将其分为 2 个步骤:

res_intermediate = sorted(m, key=lambda x: x[1])
res = sorted(res_intermediate, key=lambda x: x[0], reverse=True)

关于python - 对具有多个条件的元组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49749940/

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