doo*_*men 2 python sorting list python-3.x
例如,我有一个元组:
m = [(5,1),(3,7),(5,7),(6,2),(8,2),(3,6),(5,3),(8,2)]
Run Code Online (Sandbox Code Playgroud)
我想将这个元组排序为这样的元组:
m_sorted = [(8, 2), (8, 2), (6, 2), (5, 1), (5, 3), (5, 7), (3, 6),
(3, 7)]
Run Code Online (Sandbox Code Playgroud)
我先做:
m = sorted(m,reverse=True)
Run Code Online (Sandbox Code Playgroud)
=> 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)]
Run Code Online (Sandbox Code Playgroud)
这利用了2个属性:
sorted有一个key参数,它接受一个匿名lambda函数.请注意,由于排序是稳定的,您可以将其拆分为两个步骤:
res_intermediate = sorted(m, key=lambda x: x[1])
res = sorted(res_intermediate, key=lambda x: x[0], reverse=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |