2016-07-18 19 views
0

Kämpfen, um herauszufinden, warum das nicht funktioniert. Es sollte. Aber wenn ich eine Liste der Wörterbücher erstellen und suche dann durch diese Liste, ich sehe immer nur den letzten Eintrag aus der Liste:Python-Liste der Wörterbücher sehen nur das letzte Element

alerts = [] 
alertDict = {} 
af=open("C:\snort.txt") 

for line in af: 
    m = re.match(r'([0-9/]+)-([0-9:.]+)\s+.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})\s+->\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})', line) 
    if m: 
     attacktime = m.group(2) 
     srcip = m.group(3) 
     srcprt = m.group(4) 
     dstip = m.group(5) 
     dstprt = m.group(6) 
     alertDict['Time'] = attacktime 
     alertDict['Source IP'] = srcip 
     alertDict['Destination IP'] = dstip 
    alerts.append(alertDict) 

for alert in alerts: 
    if alert["Time"] == "13:13:42.443062": 
     print "Found Time" 

Antwort

4

Sie erstellen genau ein dict am Anfang des Skripts, und fügen Sie dann, dass man dict zu der Liste mehrmals.

Versuchen Sie, mehrere einzelne Dicts zu erstellen, indem Sie die Initialisierung in das Innere der Schleife verschieben.

alerts = [] 
af=open("C:\snort.txt") 

for line in af: 
    alertDict = {} 
    #rest of loop goes here