Qual è l'equivalente di un dizionario Python come {'a':1, 'b':2}
in elisp? E, ancora, l'elisp ha qualche api che riduce la mappa?Dizionario Python o mappa in chiaro
risposta
Association lists sono i contenitori associativi più comunemente utilizzati in elisp. È solo un elenco di celle con valori-chiave come questo ((key . value))
. È possibile utilizzare la funzione assoc
per ottenere un valore corrispondente a una chiave e rassoc
per ottenere una chiave con il valore richiesto.
Elisp viene fornito con la funzione incorporata mapcar
che esegue la mappatura, ma AFAIK non è valido fold
. Potresti emularlo usando uno dei servizi di loop forniti. Tuttavia, la soluzione migliore è utilizzare cl-lib
e scivolare nella terra CommonLisp. In particolare, it suppliescl-mapcar
e cl-reduce
.
Oltre liste associative, (il cui algoritmica complessità è OK per piccoli tavoli, ma non per quelle di grandi dimensioni), ci sono tabelle hash, è possibile costruire con make-hash-table
e puthash
, o se preferite valori immediati, è possibile scriverli come #s(hash-table data a 1 b 2)
.
pradhan, per ottenere il valore da una mappa, si può usare assq (o) assoc? –
Di solito, 'assoc' è ciò che ha senso perché confronta le chiavi con' uguale'. D'altra parte, 'assq' si confronta con' eq' che richiede che siano esattamente lo stesso oggetto in memoria. – Pradhan