Không, bạn sẽ cần xóa chúng theo cách thủ công. Sử dụng itertools.dropwhile()
làm cho rằng một chút dễ dàng hơn có lẽ:
from itertools import dropwhile
for key, count in dropwhile(lambda key_count: key_count[1] >= 15, main_dict.most_common()):
del main_dict[key]
diễn:
>>> main_dict
Counter({'baz': 20, 'bar': 15, 'foo': 10})
>>> for key, count in dropwhile(lambda key_count: key_count[1] >= 15, main_dict.most_common()):
... del main_dict[key]
...
>>> main_dict
Counter({'baz': 20, 'bar': 15})
Bằng cách sử dụng dropwhile
bạn chỉ cần kiểm tra các phím mà đếm là 15 trở lên; sau đó nó sẽ từ bỏ thử nghiệm và chỉ đi qua mọi thứ. Điều đó hoạt động tốt với danh sách được phân loại most_common()
. Nếu có nhiều giá trị dưới 15, tiết kiệm thời gian thực hiện cho tất cả các thử nghiệm đó.
Nguồn
2013-04-07 11:18:37
Tôi không nhìn thấy điểm trong 'dropwhile' cho trường hợp này – jamylak
Cũng' 'bar'' nên không bị xóa từ tần số của nó là không ít hơn 15. Trên thực tế ý tưởng này có thể làm việc trong một cách khác, nhưng không thực sự cho việc xóa khóa. ví dụ. 'new_dict = dict (trong khi đó (lambda x: x [1]> = 15, main_dict.most_common()))' – jamylak
@jamylak: 'dropwhile' dừng kiểm tra khi nó ngừng khớp; cho một số lượng lớn các phím tạo nên sự khác biệt. Tôi sẽ điều tra lỗi sau. –