2011-03-31 40 views
5

Python 2.7/3.1 của Python đã giới thiệu số collections.Counter tuyệt vời.Kiểm tra số lượng phần tử trong `Counter`

Câu hỏi của tôi: Làm cách nào để đếm số lượng "xuất hiện phần tử" mà bộ đếm có?

Tôi muốn điều này:

len(list(counter.elements())) 

Nhưng ngắn hơn.

+0

tôi nêu ra các chủ đề trên Python-ý tưởng và Raymond hettinger nói một Counter.elements_count() 'phương pháp 'có thể được thêm vào. Vấn đề về Python: http://bugs.python.org/issue11733 –

Trả lời

3
sum(counter.itervalues()) 

+3

Không có cách tiếp cận O (1) nào? – corsiKa

+0

Không, không có. 'Counter' không theo dõi thông tin này. Ít nhất tổng hợp số đếm hiệu quả hơn nhiều so với 'len (list (counter.elements()))'. –

+0

Đây là (a) hiệu quả hơn và (b) gọn gàng hơn so với phương pháp ban đầu của tôi, nhưng nó vẫn xấu xí. Nếu không có cách nào tốt hơn, tôi đề nghị rằng nên có một phương thức 'Counter.elements_count()'. –

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