2012-06-07 16 views
5

Đưa ra danh sách các phao có tên 'x', tôi muốn tạo một dict ánh xạ từng x trong x [1: -1] tới các láng giềng của nó bằng cách sử dụng đọc dict. Tôi đã thử dòng sau:Cú pháp không hợp lệ bằng cách sử dụng dict comprehension

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

Tuy nhiên, cú pháp có vẻ không hợp lệ. Tôi đang làm gì sai?

+0

Điều này làm việc cho tôi trong danh sách mẫu: '[1.0,2.3,4.1,1.9,7.0,9.9]'. Bạn cần Python 2.7+ hoặc 3.0+ để sử dụng dict/set comprehensions. – jamylak

+5

Phiên bản python chính xác của bạn là gì? – Nobody

+1

Làm việc trong [test] của tôi (http://ideone.com/pfWVl). – Howard

Trả lời

19

Dict comprehensions chỉ có sẵn bằng Python 2.7 trở lên. Đối với các phiên bản cũ hơn, bạn cần hàm tạo dict() với trình tạo:

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

Làm việc ngay bây giờ! Cảm ơn rất nhiều! Tôi có 2,7 trên máy khác của tôi. Tôi sẽ không bao giờ nghĩ rằng nó sẽ là một vấn đề ... – Chris