首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序IPv4Network和IPv6Network对象的列表

排序IPv4Network和IPv6Network对象的列表
EN

Stack Overflow用户
提问于 2016-05-27 14:05:48
回答 1查看 451关注 0票数 3

我有一个用IPv4创建的IPv6和ipaddress.ip_network()网络列表,我想对它们进行排序(先按家庭排序,然后再按值排序)。做这件事最好的方法是什么?显然,天真的一种是行不通的:

代码语言:javascript
复制
>>> from ipaddress import ip_network
>>> L = [ip_network(x) for x in ['ff00::/8', 'fd00::/8', '172.16.0.0/12', '10.0.0.0/8']]
>>> L.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.5/ipaddress.py", line 652, in __lt__
    self, other))
TypeError: 10.0.0.0/8 and fd00::/8 are not of the same version
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-27 14:10:56

只需使用允许先按类型比较值的 function,如下所示:

代码语言:javascript
复制
>>> from ipaddress import ip_network, IPv6Network
>>> L = [ip_network(x) for x in ['ff00::/8', 'fd00::/8', '172.16.0.0/12', '10.0.0.0/8']]
>>> L.sort(key=lambda x: (isinstance(x, IPv6Network), x))
>>> L
[IPv4Network('10.0.0.0/8'), IPv4Network('172.16.0.0/12'), IPv6Network('fd00::/8'), IPv6Network('ff00::/8')]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37485530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档