Jaki jest odpowiednik słownika Pythona, takiego jak {'a':1, 'b':2}
w elicie? I znowu, czy elisp ma jakąś api-redukcję map?Słownik w języku Python lub mapa w elispie
Odpowiedz
Association lists to najczęściej używane pojemniki asocjacyjne w elicie. Jest to po prostu lista kluczowych komórek konsolowych, takich jak ta ((key . value))
. Możesz użyć funkcji assoc
, aby uzyskać wartość odpowiadającą kluczowi i rassoc
, aby uzyskać klucz o wymaganej wartości.
Elisp ma wbudowaną funkcję mapcar
, która mapuje, ale AFAIK nie ma dobrego obiektu fold
. Możesz emulować go za pomocą dowolnego z dostępnych urządzeń do tworzenia pętli. Jednak lepszym rozwiązaniem jest użycie cl-lib
i wślizgnięcie się do ziemi CommonLisp. W szczególności, it suppliescl-mapcar
i .
Poza list stowarzyszenia, (których algorytmicznych złożoność jest OK dla małych stolików, ale nie za dużych), są stoły z cebulą, można skonstruować z make-hash-table
i puthash
, lub jeśli wolisz natychmiastowych wartości, można zapisać je jako #s(hash-table data a 1 b 2)
.
pradhan, aby uzyskać wartość z mapy, czy można użyć assq (lub) assoc? –
Zwykle "assoc" ma sens, ponieważ porównuje klucze z 'równym'. Z drugiej strony, 'assq' porównuje się z' eq', który wymaga, aby był dokładnie tym samym obiektem w pamięci. – Pradhan