I am trying to change the value of one key in an association based on the value of another key in that association. So if my association starts as: x=<|"firstValue" -> True, "isFirstValueTrue" -> False|> I want to change it to: <|"firstValue" -> True, "isFirstValueTrue" -> True|> So I wrote the function: f[x_] := If[x[["firstValue"]], x[["isFirstValueTrue"]] = True, x[["isFirstValueTrue"]] = False] I got an error, but based on this answer: http://stackoverflow.com/questions/12875913/setsetps-in-the-part-assignment-is-not-a-symbol I was to correct it by using: SetAttributes[f, HoldAll]. But let's say I want to do this to a list of associations: x={<|"firstValue" -> True, "isFirstValueTrue" -> False|>, <|"firstValue" -> True, "isFirstValueTrue" -> True|>, <|"firstValue" -> False, "isFirstValueTrue" -> False|>, <|"firstValue" -> False, "isFirstValueTrue" -> True|>} so I wrote: Map[f[#] &, x] However, the "in the part assignment is not a symbol." error appears again and you can't `SetAttributes[Map, HoldAll]`. I realize I can make a copy of the list and make changes to that, but the actual list I'm working with is much larger so I do not want to do that. The third solution in the link above is able to be mapped, but it doesn't seem like you can replace in an association. Any suggestions?