Erstellen Sie eine Assoziationsliste aus zwei Vektoren


7

Ich habe zwei Vektoren [apple orange]und [5 10]. Wie erstelle ich daraus eine Assoziationsliste ((apple 5) (orange 10))?

Antworten:


11

Sie können verwenden cl-pairlis:

(require 'cl-lib)

(cl-pairlis '(apple orange) '(5 10))
;; =>
;; ((apple . 5) (orange . 10))

Funktioniert auch für Vektoren:

(cl-pairlis [apple orange] [5 10])
;; =>
;; ((apple . 5) (orange . 10))

(Die clBibliothek definiert den kürzeren Alias pairlisfür cl-pairlis, dies ist jedoch in neueren Emacs-Versionen veraltet.)


Hallo abo-abo, es funktioniert wie Magie! Ich möchte die Zuordnungsliste in einer Datei speichern. Kennen Sie eine gute Funktion dafür? (Einfügen funktioniert nicht) ...
yi.tang.uni

(Einfügen (prin1-to-string (pairlis [Apfelorange] [5 10]))
abo-abo

Interessanterweise wusste ich nicht, dass es mit Vektoren funktioniert (was ein undokumentiertes Merkmal zu sein scheint).
jch

@ abo-abo das ist toll, vielen Dank! hat mir viel Zeit beim googeln gespart!
yi.tang.uni

11

(cl-mapcar #'cons [apple orange] [5 10]) => ((apple . 5) (orange . 10))

(cl-mapcar #'list [apple orange] [5 10]) => ((apple 5) (orange 10))

Emacs cl-mapcarnimmt als Argumente eine Funktion der Arität eine oder mehrere und die gleiche Anzahl von Sequenzen wie seine Arität. Common Lisp's mapcarist ähnlich, aber die einzigen Sequenzen, die es akzeptiert, sind Listen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.