我有一個鍵列表和我想要添加到散列表的值列表。到目前爲止,我已經得到了最好的是:向球拍中的散列表中添加鍵和值的平行列表?
(apply hash-set*! table (flatten (map list keys values)))
但是,這讓很多嵌套列表僅弄平它們。
有沒有一種簡單的方法來做到這一點,而不使嵌套列表?
我有一個鍵列表和我想要添加到散列表的值列表。到目前爲止,我已經得到了最好的是:向球拍中的散列表中添加鍵和值的平行列表?
(apply hash-set*! table (flatten (map list keys values)))
但是,這讓很多嵌套列表僅弄平它們。
有沒有一種簡單的方法來做到這一點,而不使嵌套列表?
最簡單的 'for' 循環可以在這裏使用:
(for ([k keys]
[v vals])
(hash-set! table k v))
除非你列出成千上萬的渴望真的並不重要,但在這裏懶惰的名字是什麼,我會做:
(require srfi/26) ; cut
(for-each (cut hash-set! table <> <>) keys vals)
同樣沒有SRFI-26:
(for-each (λ (k v) (hash-set! table k v)) keys vals)
我想我會這樣寫:
#lang racket
(define keys '(a b c))
(define values '(1 2 3))
(define table (hash 'p 34 'c 9))
(for/fold ([ht table])
([k (in-list keys)]
[v (in-list values)])
(hash-set ht k v))
...沒有額外的需求。
是的,它不是一個效率的事情。這更多的是一種優雅的東西,並想知道是否有一種慣用的方式來做到這一點。 – Octa9on