;; We can trivially switch data structures now
cl-user> (labels ((mapping (function)
                    (lambda (rf)
                      (lambda (acc next)
                        (funcall rf acc (funcall function next)))))
                  (transduce (xf build seq)
                    (funcall build
                             (reduce (funcall xf build) seq :initial-value (funcall build)))))
           (let ((result (transduce (compose (mapping (data-lens:juxt #'identity #'identity))
                                             (mapping (data-lens:over #'parse-integer))
                                             (mapping (data-lens:transform-head #'2*))
                                             (mapping (data-lens:transform-head #'1+)))
                                    (lambda (&optional (acc nil acc-p) (next nil next-p))
                                      (cond (next-p (destructuring-bind (k v) next
                                                      (setf (gethash k acc) v)) acc)
                                            (acc-p acc)
                                            (t (make-hash-table))))
                                    '("234" "345" "567" "213"))))
             (values result
                     (alexandria:hash-table-alist result))))
#<HASH-TABLE :TEST EQL :COUNT 4 {10075E2E13}>
((427 . 213) (1135 . 567) (691 . 345) (469 . 234))