Par exemple, dans une carte:Clojure Spectre: comment trouver des clés de carte ayant une valeur spécifique?
{"test-1" 23,
"test-2" 456,
"test-3" 23}
Comment trouver les clés qui ont une valeur 23
?
Par exemple, dans une carte:Clojure Spectre: comment trouver des clés de carte ayant une valeur spécifique?
{"test-1" 23,
"test-2" 456,
"test-3" 23}
Comment trouver les clés qui ont une valeur 23
?
Si vous voulez trouver quelque chose en utilisant Specter, il est préférable d'utiliser spectre/select.
(use 'com.rpl.specter)
(select [ALL #(= (second %) 23) FIRST]
{"test-1" 23,
"test-2" 456,
"test-3" 23})
C'est exactement le genre de solution que j'attendais et j'espère! Beaucoup plus élégant que les autres. – sumek
Je pense que vous n'avez pas besoin de spectre pour le faire, il suffit de filtrer par valeur. I.e.:
(->> {:key-1 10
:key-2 20
:key-3 10}
(filter (fn [[k v]] (= v 10)))
(map first))
==> [:key-1 :key-3]
Une solution est Specter:
(keys (specter/setval [specter/MAP-VALS #(not= 10 %)]
specter/NONE
{:key-1 10
:key-2 20
:key-3 10}))
Vous n'avez pas vraiment besoin de 'seq' car le filtre va quand même segmenter son entrée. –
oui, vous avez raison –
avez-vous besoin de spectre pour cette entrée? ce n'est pas profondément structuré tho. –
Eh bien cela pourrait aussi bien être un exemple banalisé, et bien que facile à faire sans spectre, on pourrait en dire autant pour de nombreuses structures de données triviales vs spectre. Pourtant, la question elle-même est claire et ne manque que quelques "j'ai déjà essayé" affichage d'efford de OP. – cfrick