Ich versuche, eine Datenstruktur aus einer CSV-Datei aufzubauen. Der Inhalt der CSV-Datei ist unten aufgeführt.So initialisieren Sie die Datenstruktur einmal in Python-Schleife
‘Windows 8’,10.1.1.1,’Windows 8 Server’,’SiteA’
‘Windows 8’,10.2.2.2,’Windows 8 Server’,’SiteB’
‘Cisco Router,’172.16.1.1’,’Cisco Router 881’,’SiteA’
‘Cisco Router,’172.16.1.3’,’Cisco Router 881’,’SiteC’
‘Cisco Router,’172.16.1.4’,’Cisco Router 881’,’SiteB’
Ich versuche, die Daten von Gerätetyp zu einer Gruppe, dann Website und haben eine Liste von gemeinsamen IP-Adressen zusammen mit der Beschreibung.
Das Problem, das ich habe, ist, ich kann nicht arbeiten, um sicherzustellen, dass ich nur die verschiedenen Teile der Datenstruktur nur eine initialisiere.
Unten ist mein Code.
import csv
import pprint
data = {}
pp = pprint.PrettyPrinter(indent=4)
f = open('/Users/marcos/Desktop/vulns/data.csv', 'rt')
try:
reader = csv.reader(f)
for row in reader:
product = row[0]
ip = row[1]
description = row[2]
site = row[3]
try:
data[product][site]['ipaddresses'].append(ip)
data[product][site]['description'] = description
except:
data[product] = {}
data[product][site] = {}
data[product][site]['ipaddresses'] = []
data[product][site]['ipaddresses'].append(ip)
data[product][site]['description'] = description
finally:
f.close()
pp.pprint(data)
Was ich zur Zeit bin immer ist die folgende, die ist, weil mein außer immer auslöst ich
{ '‘Cisco Router': { '’SiteB’': { 'description': '’Cisco Router 881’',
'ipaddresses': ['’172.16.1.4’']}},
'‘Windows 8’': { '’SiteB’': { 'description': '’Windows 8 Server’',
'ipaddresses': ['10.2.2.2']}}}
Der üblicher Weg, um damit umzugehen ist 'defaultdict (dict)' zu verwenden (von 'collections') automatisch auf initiallze fehlende Schlüssel oder beim Check manuell' wenn my_item nicht in my_dict: my_dict [my_item] = {} 'vor dem Hinzufügen zum Diktat (oder Liste oder ...) – Julien