2017-08-11 23 views
0

J'ai une requête en Python 2.7. Tout fonctionne sans problèmes; Cependant, j'ai besoin de faire trier les résultats en fonction du CIDR du réseau. Vous trouverez ci-dessous le code et une copie des résultats que je comprends le résultat que j'ai essayé d'obtenir. J'ai essayé tous les types de tri et je n'arrive pas à faire fonctionner le tri.Comment faire pour trier la partie CIDR des résultats qui inclut le test dans Python 2.7?

query = """ 
    SELECT Address, 
     CIDR, FriendlyName 
    FROM IPAM.GroupNode 
    """ 
    results = swis.query(query) 
    for row in results['results']: 
     print("{FriendlyName} is using CIDR - Address}/{CIDR}".format(**row)) 

Renvoie les résultats ci-dessous:

Some Customer is using CIDR - 10.200.104.0/22 
Some Others is using CIDR - 10.200.86.0/22 
Customer1 in CO is using CIDR - 10.200.0.0/20 
Customer2 is using CIDR - 10.200.64.0/20 
Another Cust is using CIDR - 10.200.32.0/22 
Another Cust2 is using CIDR - 10.200.128.0/20 
Another Cust3 is using CIDR - 10.200.112.0/22 

Ce que je dois faire est d'avoir le retourner à la place quelque chose comme:

Customer1 in CO is using CIDR - 10.200.0.0/20 
Another Cust is using CIDR - 10.200.32.0/22 
Customer2 is using CIDR - 10.200.64.0/20 
Some Others is using CIDR - 10.200.86.0/22 
Some Customer is using CIDR - 10.200.104.0/22 
Another Cust3 is using CIDR - 10.200.112.0/22 
Another Cust2 is using CIDR - 10.200.128.0/20 
+0

Je pense que vous pourriez probablement mettre tous ces éléments dans une liste, et trier les list en utilisant un paramètre 'key = lambda' – Mangohero1

Répondre

0

Faites une liste avant votre boucle for:

cidrs = [] 

Remplacer print avec .append():

cidrs.append("{FriendlyName} is using CIDR - Address}/{CIDR}".format(**row)) 

Trier la liste par bloc REDC (aka, deux derniers chiffres):

sorted(cidrs, key=lambda x: x[-2:])