2016-10-10 93 views
0

我有一個鍵列表和我想要添加到散列表的值列表。到目前爲止,我已經得到了最好的是:向球拍中的散列表中添加鍵和值的平行列表?

(apply hash-set*! table (flatten (map list keys values))) 

但是,這讓很多嵌套列表僅弄平它們。

有沒有一種簡單的方法來做到這一點,而不使嵌套列表?

回答

0

最簡單的 'for' 循環可以在這裏使用:

(for ([k keys] 
     [v vals]) 
    (hash-set! table k v)) 
0

除非你列出成千上萬的渴望真的並不重要,但在這裏懶惰的名字是什麼,我會做:

(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) 
+0

是的,它不是一個效率的事情。這更多的是一種優雅的東西,並想知道是否有一種慣用的方式來做到這一點。 – Octa9on

0

我想我會這樣寫:

#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)) 

...沒有額外的需求。