2012-06-07 10 views
5

Dada una lista de flotantes llamada 'x', me gustaría crear un mapeo dict cada x en x [1: -1] a sus vecinos usando una comprensión dict. He intentado la siguiente línea:Sintaxis inválida usando comprensión dict

neighbours = {x1:(x0,x2) for (x0,x1,x2) in zip(x[:-2],x[1:-1],x[2:])} 

Sin embargo, la sintaxis parece no válida. ¿Qué estoy haciendo mal?

+0

Esto funciona para mí en la lista de ejemplo: '[1.0,2.3,4.1,1.9,7.0,9.9] '. Necesita Python 2.7+ o 3.0+ para usar las comprensiones dictadas/establecidas. – jamylak

+5

¿Cuál es tu versión exacta de python? – Nobody

+1

Trabajó en mi [prueba] (http://ideone.com/pfWVl). – Howard

Respuesta

19

Dict comprehensions solo están disponibles en Python 2.7 en adelante. Para versiones anteriores, es necesario el constructor dict() con un generador:

dict((x1, (x0,x2)) for (x0,x1,x2) in zip(x[:-2],x[1:-1],x[2:])) 
+0

¡Funciona ahora! ¡Muchas gracias! Tengo 2.7 en mi otra máquina. Nunca hubiera pensado que sería un problema ... – Chris

Cuestiones relacionadas