Python Glossary English

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Сообщить о неточности