鱼C论坛

 找回密码
 立即注册
查看: 1822|回复: 2

[已解决]python 列表里数据排序求助:

[复制链接]
发表于 2021-6-28 16:43:17 | 显示全部楼层 |阅读模式
5鱼币
源数据
['X=179.990;Y=43.105;Set','X=77.895;Y=123.991;Set','X=231.395;Y=123.991;Set','X=59.990;Y=43.105;Set','X=154.645;Y=123.991;Set']
要python对以上5行数据依据XY值进行重新排位, 位置是从上到下,从左到右,如下:
(即,Y值大的要排上面, 当Y值相等时,X值小的排左边)
排好后的应该如下:
['X=77.895;Y=123.991;Set','X=154.645;Y=123.991;Set','X=231.395;Y=123.991;Set','X=59.990;Y=43.105;Set','X=179.990;Y=43.105;Set']
帮忙看一下在python中有没有什么好,可靠且简单的方法可以实现?
最佳答案
2021-6-28 16:43:18
  1. ls = ['X=179.990;Y=43.105;Set','X=77.895;Y=123.991;Set','X=231.395;Y=123.991;Set','X=59.990;Y=43.105;Set','X=154.645;Y=123.991;Set']

  2. ls.sort(key=lambda x: (-float(x.split(';')[1][2:]), float(x.split(';')[0][2:] )))

  3. print(ls)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-28 16:43:18 | 显示全部楼层    本楼为最佳答案   
  1. ls = ['X=179.990;Y=43.105;Set','X=77.895;Y=123.991;Set','X=231.395;Y=123.991;Set','X=59.990;Y=43.105;Set','X=154.645;Y=123.991;Set']

  2. ls.sort(key=lambda x: (-float(x.split(';')[1][2:]), float(x.split(';')[0][2:] )))

  3. print(ls)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-29 08:58:34 | 显示全部楼层
原以为key里只能设一个条件,原来可以多个.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-14 21:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表