在Clojure中关联Map中的值

我想在下面显示的输出中添加一个key-val对,其编号为2,site-label为co2。

{:correct? false,:training-countdown nil,:site-communication {0 [],1 [],2 [],3 (0 1),4 (3 2)},:site-label :t-<<:temperature-:humidity_i3>-:co2_i4>,:agreement 478/739,:breakdown
 {0
  {:training-countdown nil,:site-label :temperature,:agreement 1,:site-order 0,:transformed-confidence 0.6367035786260278,:confidence-ma 0.86235090749618,:raw-votes (0.17910252984637456 0.10219403555517105),:id 10001,:class 0,:raw-confidence 0.17910252984637456,:site-type :p-site,:quantile 139/1000,:confidence 0.6367035786260278,:process-time {:cpu-nano 0,:wall-nano 14500}},1
  {:training-countdown nil,:site-label :humidity,:transformed-confidence 0.7396347578595606,:confidence-ma 0.7673990631272951,:raw-votes (0.05875164784557538 0.020681676807254086),:raw-confidence 0.05875164784557538,:quantile 273/1000,:confidence 0.7396347578595606,:wall-nano 26600}},2
  {:training-countdown nil,:site-label :co2,:transformed-confidence 0.6885013017580619,:confidence-ma 0.8687745984384241,:raw-votes (6.209281474901374E-4 2.809265707284352E-4),:raw-confidence 6.209281474901374E-4,:quantile 79/1000,:confidence 0.6885013017580619,:wall-nano 14400}},3
  {:training-countdown nil,:site-label :t-<:temperature-:humidity_i3>,:agreement 498/499,:site-order 1,:transformed-confidence 0.7146049092604565,:confidence-ma 0.9331555208607589,:raw-votes (220.42790579127143 551.9326320865079),:class 1,:raw-confidence 551.9326320865079,:site-type :t-site,:quantile 9/100,:confidence 0.7146049092604565,:wall-nano 241300}},4
  {:training-countdown nil,:site-order 2,:transformed-confidence 0.932189769224312,:confidence-ma 0.845843308389129,:raw-votes (51.39818941403593 706.5728250787176),:raw-confidence 706.5728250787176,:quantile 317/500,:confidence 0.932189769224312,:wall-nano 283700}}},:truth 0,:candidate-results
 {-1
  {:training-countdown nil,:wall-nano 283700}}
vcdok000 回答:在Clojure中关联Map中的值

您正在寻找的功能是assoc-in,它带有一个地图,一系列用于遍历嵌套地图的键以及需要放在键所形成路径的末尾的值。

示例:

user=> (def measures0 {:items {0 {:label "original label" :comment "nice"} 1 {:label "label 1" :comment "nice 1"}}})
#'user/measures0

user=> (clojure.pprint/pprint measures0)
{:items
 {0 {:label "original label",:comment "nice"},1 {:label "label 1",:comment "nice 1"}}}
nil

user=> (def measures-updated (assoc-in measures0 [:items 0 :label] "UPDATED LABEL"))
#'user/measures-updated

user=> (clojure.pprint/pprint measures-updated)
{:items
 {0 {:label "UPDATED LABEL",:comment "nice 1"}}}

本文链接:https://www.f2er.com/3154973.html

大家都在问