Tengo un pedazo de código que se parece a esto:¿Cómo ordenar las direcciones IP almacenadas en el diccionario en Python?
ipCount = defaultdict(int)
for logLine in logLines:
date, serverIp, clientIp = logLine.split(" ")
ipCount[clientIp] += 1
for clientIp, hitCount in sorted(ipCount.items), key=operator.itemgetter(0)):
print(clientIp)
y como que ordena IP, pero como esto:
192.168.102.105
192.168.204.111
192.168.99.11
que no es lo suficientemente bueno, ya que no reconoce que el 99 es un número menor que 102 o 204. me gustaría que la salida sea así:
192.168.99.11
192.168.102.105
192.168.204.111
encontré this, pero no estoy seguro de cómo impl hacerlo en mi código, o si es posible ya que uso el diccionario. ¿Cuáles son mis opciones aquí? Gracias ..
También puede hacer esto con la función 'map':' ordenados (ipCount.items (clave), lambda = x: tuple (map (int, x.split ('.'))))) ' – Handyman5
Veo que las respuestas actualizadas que usan inet_aton son diferentes: la llamada de Ludo struct.unpack y la de Ferdinand no. ¿Es necesaria esta función para ordenar o no? –
@randomtoor: es * no * necesario. 'inet_aton' devuelve una cadena de 4 caracteres, y Python sabe cómo comparar y ordenar cadenas. –