2009-12-09 41 views
8

Tôi có một danh sách các từ điển mà có các phím tương tự trong ví dụ:Xóa chìa khóa/giá trị từ danh sách các từ điển sử dụng lambda và bản đồ

[{k1:'foo', k2:'bar', k3...k4....}, {k1:'foo2', k2:'bar2', k3...k4....}, ....] 

Tôi đang cố gắng để xóa k1 từ tất cả các từ điển trong danh sách.

tôi đã cố gắng

map(lambda x: del x['k1'], list) 

nhưng điều đó đã cho tôi một lỗi cú pháp. Tôi đã đi sai ở đâu?

Trả lời

19

thân lambda chỉ là các biểu thức, không phải là câu như del.

Nếu bạn sử dụng bản đồ và lambda, sau đó:

map(lambda d: d.pop('k1'), list_of_d) 

Một vòng lặp for có lẽ là rõ ràng hơn:

for d in list_of_d: 
    del d['k1'] 
+1

sẽ không chỉ cung cấp cho tôi một danh sách 'của k1? pop trả về giá trị bị xóa mà tôi tin. – webley

+0

Có vẻ như bạn không thực sự muốn 'bản đồ'. Bạn không cố tính toán danh sách các giá trị từ một danh sách khác. Bạn đang cố gắng hành động trên một danh sách. Sử dụng vòng lặp for thay thế. –

+0

Và BTW, 'map' sẽ tạo danh sách các giá trị đã xóa, nhưng bạn có thể bỏ qua giá trị được trả về từ' bản đồ' nếu bạn muốn. –

Các vấn đề liên quan