-1
votes

Python: comment créer une fonction de liste de dictionnaires qui recherche des adresses IP spécifiques

Je souhaite créer une liste d'adresses IP. Je veux parcourir le dictionnaire et vérifier l'adresse IP avec la condition if. Si l'adresse est suédoise, je souhaite l'ajouter à une liste. Une fois le dictionnaire vérifié, je veux parcourir la liste et imprimer toutes les adresses IP suédoises. Qu'est-ce que je fais mal?

def ipAddresses(listOfIps):   ### list of ip addresses in dictionary
    ipAddresses = {"255.255.255.0 / 21": "Suomi",
    "192.168.64.96 / 27": "Suomi",
    "32.204.65.64 / 27": "Suomi",
    "41.57.128.0 / 22": "Sweden",
    "31.204.70.96 / 27": "Suomi",
    "41.58.10.0 / 16": "Sweden",
    "31.217.192.162 / 21": "Suomi",
    "10.42.100.136 / 29": "Suomi",
    "32.100.148.0 / 24": "Suomi",
    "41.67.128.0 / 18": "Sweden",
   "10.10.10.100 / 24": "Suomi",
    "10.10.100.1 / 24": "Suomi"
    }

    for ip, country in listOfIps.items():  ## if ip address is Swedish, add it to a list
        if (country == Sweden):
            ipAddresses.append(ip,country)
        return ipAddresses


def Osio6():  ## loop through the list and print all swedish IP-addresses
    listOfIps = []
    for ipAddress in listOfIps:
        listOfIps.append(ipAddress)
    
        ipAddressList = Swedish(listOfIps)
        print ("List of Swedish IP-addresses are: \n", ipAddressList, "\n")


3 commentaires

Pourquoi ne l'avez-vous pas fait?


print("\n".join(ip for ip, country in ipAddresses.values() if country == "Sweden"))


mylist = [ipaddress for ipaddress, location in mydictionary.items() if location == "Sweden"]


4 Réponses :


0
votes

Cela devrait vous aider:

--------------------------------------------------------------------------------
Swedish IP Addresses
--------------------------------------------------------------------------------
41.57.120.0 / 22
41.58.0.0 / 16
41.67.128.0 / 18

Production:

ipAddresses = {
"1.172.152.0 / 21": "Finland",
"31.204.64.96 / 27": "Finland",
"31.204.65.64 / 27": "Finland",
"41.57.120.0 / 22": "Sweden",
"31.204.66.96 / 27": "Finland",
"41.58.0.0 / 16": "Sweden",
"31.217.192.0 / 21": "Finland",
"32.42.29.136 / 29": "Finland",
"32.106.148.0 / 24": "Finland",
"41.67.128.0 / 18": "Sweden",
"32.106.181.0 / 24": "Finland",
"32.106.182.0 / 24": "Finland"
}

print('-'*80 + "\nSwedish IP Addresses\n" + '-'*80)
[print(key) for key in ipAddresses.keys() if ipAddresses[key] == "Sweden"]


0 commentaires

0
votes

Voici un exemple de la façon dont vous pouvez stocker des adresses suédoises dans une liste, puis imprimer la liste (vous pouvez également le faire avec l'aide de la compréhension de la liste):

41.57.120.0 / 22
41.58.0.0 / 16
41.67.128.0 / 18

Impressions:

ipAddresses = {
    "1.172.152.0 / 21": "Finland",
    "31.204.64.96 / 27": "Finland",
    "31.204.65.64 / 27": "Finland",
    "41.57.120.0 / 22": "Sweden",
    "31.204.66.96 / 27": "Finland",
    "41.58.0.0 / 16": "Sweden",
    "31.217.192.0 / 21": "Finland",
    "32.42.29.136 / 29": "Finland",
    "32.106.148.0 / 24": "Finland",
    "41.67.128.0 / 18": "Sweden",
    "32.106.181.0 / 24": "Finland",
    "32.106.182.0 / 24": "Finland"
}

# store swedish addresses to list:
swedish_addresses = []
for ip, country in ipAddresses.items():
    if country == 'Sweden':
        swedish_addresses.append(ip)

# print swedish addresses:
for address in swedish_addresses:
    print(address)


0 commentaires

0
votes

Quelque chose comme ça.

{'41.57.120.0 / 22': 'Sweden', '41.58.0.0 / 16': 'Sweden', '41.67.128.0 / 18': 'Sweden'}

Production

ipAddresses = {
"1.172.152.0 / 21": "Finland",
"31.204.64.96 / 27": "Finland",
"31.204.65.64 / 27": "Finland",
"41.57.120.0 / 22": "Sweden",
"31.204.66.96 / 27": "Finland",
"41.58.0.0 / 16": "Sweden",
"31.217.192.0 / 21": "Finland",
"32.42.29.136 / 29": "Finland",
"32.106.148.0 / 24": "Finland",
"41.67.128.0 / 18": "Sweden",
"32.106.181.0 / 24": "Finland",
"32.106.182.0 / 24": "Finland"
}
new = dict((k,v) for k, v in ipAddresses.items() if v =='Sweden' )
print(new)


0 commentaires

0
votes
ipAddresses = {
"1.172.152.0 / 21": "Finland",
"31.204.64.96 / 27": "Finland",
"31.204.65.64 / 27": "Finland",
"41.57.120.0 / 22": "Sweden",
"31.204.66.96 / 27": "Finland",
"41.58.0.0 / 16": "Sweden",
"31.217.192.0 / 21": "Finland",
"32.42.29.136 / 29": "Finland",
"32.106.148.0 / 24": "Finland",
"41.67.128.0 / 18": "Sweden",
"32.106.181.0 / 24": "Finland",
"32.106.182.0 / 24": "Finland"
}

countryToSearchFor="Sweden"
swedenIps=[]
for ip, country in ipAddresses.items():
  if country==countryToSearchFor:
      swedenIps.append(ip)
  
for swedenIp in swedenIps:
    print(swedenIp)


0 commentaires