Cấu trúc dữ liệu của bạn (danh sách bộ tuple) được gọi là danh sách liên kết tốt nhất. Như đã chỉ ra, có lẽ tốt hơn nên sử dụng từ điển vì bạn sẽ có được chi phí khấu hao tốt hơn cho hoạt động (chèn, xóa và tra cứu là O (1) cho từ điển, nhưng xóa và tra cứu là O (n) cho kết hợp danh sách).
Liên quan đến việc cập nhật danh sách liên kết của bạn bằng cách chuyển đổi danh sách thành từ điển và sau đó quay lại danh sách liên kết, phương pháp này có ba hạn chế. Nó là khá tốn kém, nó có thể thay đổi thứ tự của các mặt hàng, và nó sẽ loại bỏ trùng lặp.
Nếu bạn muốn tiếp tục sử dụng danh sách liên kết, có lẽ tốt hơn là chỉ cần sử dụng danh sách hiểu để cập nhật cấu trúc dữ liệu.Chi phí sẽ là O (n) trong thời gian và bộ nhớ, nhưng đó là những gì bạn có khi sử dụng một từ điển trung gian.
Đây là một cách đơn giản để làm điều đó (yêu cầu Python 2.5 bởi vì nó sử dụng các nhà điều hành ternary):
def update_in_alist(alist, key, value):
return [(k,v) if (k != key) else (key, value) for (k, v) in alist]
def update_in_alist_inplace(alist, key, value):
alist[:] = update_in_alist(alist, key, value)
>>> update_in_alist([('a', 'hello'), ('b', 'world')], 'b', 'friend')
[('a', 'hello'), ('b', 'friend')]
Nguồn
2011-12-19 09:35:10
Tại sao bạn cần danh sách các hàng, không dict? Nếu thứ tự quan trọng, có [OrderedDict] (http://docs.python.org/library/collections.html#collections.OrderedDict) cho bạn. – DrTyrsa
@DrTyrsa Điều này là để cập nhật các tiêu đề của một ứng dụng wsgi trong quá trình xử lý lỗi, đó là danh sách các bộ dữ liệu – Eric