2012-06-07 16 views
5

Gegeben eine Liste von floats mit dem Namen 'x', ich möchte ein dict Mapping jedes x in x [1: -1] zu seinen Nachbarn mit einem Diktat Verständnis erstellen. Ich habe die folgende Zeile versucht:Ungültige Syntax mit dict-Verständnis

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

jedoch die Syntax für ungültig zu sein scheint. Was mache ich falsch?

+0

Dies funktioniert für mich auf Beispielliste: '[1.0,2.3,4.1,1.9,7.0,9.9]'. Sie benötigen Python 2.7+ oder 3.0+, um dict/set comprehensions zu verwenden. – jamylak

+5

Welches ist Ihre genaue Python-Version? – Nobody

+1

Arbeitete in meinem [Test] (http://ideone.com/pfWVl). – Howard

Antwort

19

Dict comprehensions sind nur in Python 2.7 aufwärts verfügbar. Für frühere Versionen, müssen Sie den dict() Konstruktor mit einem Generator:

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

Funktioniert jetzt! Danke vielmals! Ich habe 2,7 auf meiner anderen Maschine. Ich hätte nie gedacht, dass es ein Problem wäre ... – Chris