2011-09-04 16 views
23

Tôi đã xem qua ba loại này khi tôi sử dụng phương thức viewkeys(), viewitems() và viewvalues ​​() của collections.Counter.dict_keys là gì, dict_items và dict_values ​​

Giá trị mà ba phương thức được trả về là loại dict_keys, dict_itemsdict_values.

Chúng có thể lặp lại, như tôi đã nhận thấy.

Nhưng câu hỏi của tôi là:

  • tại sao ba loại tồn tại? Hoặc cách sử dụng của họ là gì?

Trả lời

28

Tài liệu What's new in 2.7 là một nơi được giới thiệu. Các "khung nhìn" này đã được giới thiệu (đề xuất here) cho Python 3 (và được chuyển đổi thành 2.7, như bạn đã thấy) để phục vụ như là một thế giới hoàn hảo nhất cho các phần của dict mà chúng đề cập đến.

Trước khi chúng tôi có các phương pháp keys/values/items chỉ cần tạo danh sách. Điều này làm lãng phí bộ nhớ bằng cách sao chép thông tin của dict và chúng tôi có các phương pháp iterkeys/itervalues/iteritems không lãng phí bộ nhớ này nhưng lại không có tính năng rất cao (điều duy nhất bạn có thể làm là lặp qua chúng).). Các chế độ xem mới này có các tính năng hợp lý, chẳng hạn như các hoạt động được đặt, so sánh hiệu quả và có thể lặp lại nhiều lần.

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