Sono un principiante Python che tenta di analizzare un file per creare una tabella di allocazioni di memoria. Il mio file di input è nel seguente formato:Dizionario Python con variabili come chiavi
48 bytes allocated at 0x8bb970a0
24 bytes allocated at 0x8bb950c0
48 bytes allocated at 0x958bd0e0
48 bytes allocated at 0x8bb9b060
96 bytes allocated at 0x8bb9afe0
24 bytes allocated at 0x8bb9af60
Il mio primo obiettivo è quello di fare una tabella che conta le istanze di un particolare numero di allocazioni di byte. In altre parole, la mia uscita desiderata per l'ingresso di cui sopra sarebbe qualcosa di simile:
48 bytes -> 3 times
96 bytes -> 1 times
24 bytes -> 2 times
(per ora, io non sono preoccupato per gli indirizzi di memoria)
Dal momento che sto usando Python, ho pensato fare questo usando un dizionario sarebbe la strada giusta da percorrere (basandosi su circa 3 ore di lezione per leggere tutorial di Python). È una buona idea?
Nel tentativo di farlo utilizzando un dizionario, ho deciso di impostare il numero di byte "chiave" e un contatore come "valore". Il mio piano era di incrementare il contatore su ogni occorrenza della chiave. A partire da ora, il mio frammento di codice è il seguente:
# Create an empty dictionary
allocationList = {}
# Open file for reading
with open("allocFile.txt") as fp:
for line in fp:
# Split the line into a list (using space as delimiter)
lineList = line.split(" ")
# Extract the number of bytes
numBytes = lineList[0];
# Store in a dictionary
if allocationList.has_key('numBytes')
currentCount = allocationList['numBytes']
currentCount += 1
allocationList['numBytes'] = currentCount
else
allocationList['numBytes'] = 1
for bytes, count in allocationList.iteritems()
print bytes, "bytes -> ", count, " times"
Con questo, ottengo un errore di sintassi nella 'has_key' chiamare, che mi porta a chiedersi se è ancora possibile utilizzare le variabili come chiavi di dizionario. Tutti gli esempi che ho visto finora presuppongono che le chiavi siano disponibili in anticipo. Nel mio caso, posso ottenere le mie chiavi solo quando sto analizzando il file di input.
(Si noti che il mio file di input può essere eseguito in migliaia di linee, con centinaia di chiavi diverse)
Grazie per tutto l'aiuto che potete fornire.
come ti vedo citato 'numBytes', quindi, si è sempre riferendo costante – dmitry
e omesso due punti in righe dopo 'se allocationList.has_key ('numBytes')' e 'else' - dovrebbe essere Errore di sintassi – dmitry