python整理十六——IP地址排序
来源:互联网 发布:mac照片导出iphone 编辑:程序博客网 时间:2024/05/16 09:32
关于ip地址的排序问题:
假如现在有一堆乱序的ip,
源数据:ls1 = ['192.168.1.8','192.168.36.8','192.168.26.8',]
排序之后期望值:ls1 = ['192.168.1.8', '192.168.26.8', '192.168.36.8']
- >>> ls1 = ['192.168.1.8','192.168.36.8','192.168.26.8',]
- >>> ls1.sort()
- >>> ls1
- ['192.168.1.8', '192.168.26.8', '192.168.36.8']
看到结果与期望值相符,欣慰。
再看一例:
源数据:ls2 = ['192.168.1.8', '192.168.36.8', '192.168.26.8', '192.168.8.8']
排序之后期望值:ls2 = ['192.168.1.8', '192.168.8.8', '192.168.26.8', '192.168.36.8']
- >>> ls2 = ['192.168.1.8','192.168.36.8','192.168.26.8','192.168.8.8']
- >>> ls2.sort()
- >>> ls2
- ['192.168.1.8', '192.168.26.8', '192.168.36.8', '192.168.8.8']
- >>>
哦~怎么结果和期望值不一样了?原来是因为忽略了它是用字符串比较的,问题就出在这了,因此,改为如下排序:
- >>> ls2 = ['192.168.1.8','192.168.36.8','192.168.26.8','192.168.8.8']
- >>> ls2.sort(lambda x,y: cmp(''.join( [ i.rjust(3, '0') for i in x.split('.')] ), ''.join( [ i.rjust(3, '0') for i in y.split('.')] ) ) )
- >>> ls2
- ['192.168.1.8', '192.168.8.8', '192.168.26.8', '192.168.36.8']
哈,又和期望值一致了。
正确的排序方法应该是:ls1.sort(lambda x,y: cmp(''.join( [ i.rjust(3, '0') for i in x.split('.')] ), ''.join( [ i.rjust(3, '0') for i in y.split('.')] ) ) )
而并非ls1.sort()
- python整理十六——IP地址排序
- python整理二十六——字符编码漫游
- Python——域名解析成IP地址
- (十六)高级排序—快速排序
- IP地址排序问题
- IP地址排序
- IP地址排序
- IP地址排序问题
- 网络编程整理IP地址
- IP地址相关知识整理
- python ip地址转换
- python ip地址转换
- python转换IP地址
- python获取ip地址
- Python获取ip地址
- Python获取IP地址
- python ip地址转换
- python匹配ip地址
- 你见过这么长的单词吗?
- 英语四六级考试考前必背作文六篇
- C#多线程学习(二) 如何操纵一个线程
- 几种字符编码的理解
- Scintilla and SciTE
- python整理十六——IP地址排序
- MFC自绘按钮的实现
- apache参数详解 linux apache web服务器终极教程
- 斐波那契数列
- 英语单词常见前后缀总结
- 最好的文本编辑器SciTE配置方法详细实例
- linux下用java通过串口连接手机或短信猫发送中文短信的方法
- thunk技术实现窗口类的封装
- 通往测试架构师之路