Bây giờ tôi phải sao chép các hastable vào một danh sách trước khi sắp xếp nó:Cách tốt nhất để sắp xếp một hashtable theo giá trị là gì?
(defun good-red()
(let ((tab (make-hash-table)) (res '()))
(dotimes (i 33) (setf (gethash (+ i 1) tab) 0))
(with-open-file (stream "test.txt")
(loop for line = (read-line stream nil)
until (null line)
do
(setq nums (butlast (str2lst (substring line 6))))
(dolist (n nums) (incf (gethash n tab)))
))
**(maphash #'(lambda (k v) (push (cons k v) res)) tab)**
(setq sort-res (sort res #'< :key #'cdr))
(reverse (nthcdr (- 33 18) (mapcar #'car sort-res)))))
BTW, cách tốt hơn để lấy các yếu tố N đầu tiên của danh sách là gì?
Câu hỏi của bạn là gì? Một trong các tiêu đề, hoặc một trong các nội dung? –
Nó sẽ không mang tính xây dựng hơn để chỉ trả lời câu hỏi trong tiêu đề và/hoặc nhận xét trong phần bình luận? – Paralife