Python 3.3+ipaddressфункция
ipaddress.get_mixed_type_key()
операции над диапазонами
Функция-ключ для sorted(), позволяющая упорядочить вперемешку адреса и сети IPv4 и IPv6.
Синтаксис
sorted(items, key=ipaddress.get_mixed_type_key)
Обычный sorted() на таком списке падает с TypeError «are not of the same version» или «'<' not supported»: адреса и сети разных версий друг с другом не сравниваются. С key=get_mixed_type_key IPv4 идут раньше IPv6, а сеть — раньше адресов внутри неё, кроме адреса самой сети: он идёт перед ней. Передают саму функцию, без скобок.
Примеры
import ipaddress
items = [ipaddress.ip_address('::1'), ipaddress.ip_address('10.0.0.1'),
ipaddress.ip_network('10.0.0.0/8')]
print([str(x) for x in sorted(items, key=ipaddress.get_mixed_type_key)])
# → ['10.0.0.0/8', '10.0.0.1', '::1']
sorted(items) # → TypeError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности