Soy un novato de Python que intenta analizar un archivo para crear una tabla de asignaciones de memoria. Mi archivo de entrada está en el siguiente formato:Diccionario de Python con variables como claves
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
Mi primer objetivo es hacer una tabla que cuenta los casos de un determinado número de asignaciones de bytes. En otras palabras, mi salida deseada para la entrada anterior sería algo así como:
48 bytes -> 3 times
96 bytes -> 1 times
24 bytes -> 2 times
(por ahora, no estoy preocupado por las direcciones de memoria)
Desde que estoy usando Python, pensé Hacer esto usando un diccionario sería el camino correcto (basado en aproximadamente 3 horas de lectura de tutoriales de Python). ¿Es eso una buena idea?
Al tratar de hacer esto usando un diccionario, decidí hacer del número de bytes la 'clave', y un contador como el 'valor'. Mi plan era incrementar el contador en cada aparición de la clave. A partir de ahora, mi fragmento de código es el siguiente:
# 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 esto, me sale un error de sintaxis en el 'has_key' llame, que me lleva a la pregunta de si es posible incluso utilizar como variables claves del diccionario. Todos los ejemplos que he visto hasta ahora suponen que las claves están disponibles por adelantado. En mi caso, puedo obtener mis llaves solo cuando estoy analizando el archivo de entrada.
(Tenga en cuenta que mi archivo de entrada puede ejecutar en miles de líneas, con cientos de diferentes claves)
Gracias por cualquier ayuda que puede proporcionar.
como veo que usted ha citado 'numBytes', por lo que, siempre se está haciendo referencia a la constante – dmitry
y se omite en las líneas de colon después de 'si allocationList.has_key ('numBytes')' y 'else' - debe ser error de sintaxis – dmitry