list1 = {{A, 12}, {B, 10}, {C, 4}, {D, 2}}; list2 = {{A, 4}, {D, 11}, {B, 5}, {C, 1}}; idx = Lookup[ AssociationThread[list1[[All, 1]] -> Range[Length[list1]]], list2[[All, 1]] ]; list2[[idx]]result = list2; result[[idx]] = list2; result {{A, 4}, {B, 5}, {C, 1}, {D, 11}}