Python给字符串列表排序

假设,我们有如下一个字符串列表数据:

# 排序前
items = ["36.1266392071335	215-08-30T13:02:4.500+0800	117.469	34.480",
         "12.1266392071335	2017-08-30T13:02:4.500+0800	117.469	34.480",
         "7.1266392071335	2019-08-30T13:02:4.500+0800	117.469	34.480",
         "214.1266392071335	2011-08-30T13:02:4.500+0800	117.469	34.480",
         ]
# 排序后
result= [
    "7.1266392071335	2019-08-30T13:02:4.500+0800	117.469	34.480",
    "12.1266392071335	2017-08-30T13:02:4.500+0800	117.469	34.480",
    "36.1266392071335	215-08-30T13:02:4.500+0800	117.469	34.480",
    "214.1266392071335	2011-08-30T13:02:4.500+0800	117.469	34.480",

]

其中,每一条item,都存放了地震的信息,【距离,时间,经度,纬度】
假设,我们想要以距离进行升序排序,有两种风法:

方法一

items = ["36.1266392071335	215-08-30T13:02:4.500+0800	117.469	34.480",
         "12.1266392071335	2017-08-30T13:02:4.500+0800	117.469	34.480",
         "7.1266392071335	2019-08-30T13:02:4.500+0800	117.469	34.480",
         "214.1266392071335	2011-08-30T13:02:4.500+0800	117.469	34.480",
         ]
items.sort()
print(items)


num = [36.1266392071335,12.1266392071335,7.1266392071335,214.1266392071335	]
strings = ["215-08-30T13:02:4.500+0800	117.469	34.480",
         "2017-08-30T13:02:4.500+0800	117.469	34.480",
         "2019-08-30T13:02:4.500+0800	117.469	34.480",
         "2011-08-30T13:02:4.500+0800	117.469	34.480",
         ]
print(num)
# print(strings)
nums = sorted(num)
print(nums)
print("==========================查看数据=========================================")
for i in range(len(num)):
    print(nums.index(num[i]))
    print(str(num[nums.index(num[i])]) + "\t"+strings[nums.index(num[i])])

这种方法是先将字段分开,首先对距离进行排序,然后根据距离排序后的列表,去查找没排序的列表,获取到下标,再将字符串和数字进行拼接,即可。

方法二

利用正则表达式。

items = ["36.1266392071335	215-08-30T13:02:4.500+0800	117.469	34.480",
         "12.1266392071335	2017-08-30T13:02:4.500+0800	117.469	34.480",
         "7.1266392071335	2019-08-30T13:02:4.500+0800	117.469	34.480",
         "214.1266392071335	2011-08-30T13:02:4.500+0800	117.469	34.480",
         ]

import re
com = re.compile(r'\d+\.\d+')
print(re.findall(com, items[0])[0])

print(sorted(items, key=lambda item: float(re.findall(com,item)[0]) ))


我们利用re.compile生成一个正则表达式规则:查看数字.数字,可以获取到所有的规则,然后我们取下标0,即可取到距离数据。使用sorted函数对数据进行排序,返回排序后的元素。结果如下:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值