Skip to main content
1 of 3
kglr
  • 400.5k
  • 18
  • 488
  • 929
assoc1 = AssociationThread[dnames1, dnumber]
<|"A1" -> 20, "A2" -> 20, "A3" -> 11, "A4" -> 21, "A5" -> 19,   "A6" -> 20|>

You can get newdnames1 directly using

dnames1[[Ordering[dnumber]]]

If you you want to work with associations, for newdnumber you can the desired result simply using Sort:

assoc2b = Sort[assoc1]
 <|"A3" -> 11, "A5" -> 19, "A1" -> 20, "A2" -> 20, "A6" -> 20,  "A4" -> 21|>
Keys @ assoc2
 {"A3", "A5", "A1", "A2", "A6", "A4"}

For general newdnumber, you can sort assoc1 using SortBy[PositionIndex[newdnumber]]:

assoc2 = SortBy[PositionIndex[newdnumber]]@assoc1
<|"A3" -> 11, "A5" -> 19, "A4" -> 21, "A1" -> 20, "A2" -> 20,  "A6" -> 20|>
Keys @ assoc2
 {"A3", "A5", "A1", "A2", "A6", "A4"}
SeedRandom[1]

shuffledDnumber = RandomSample[dnumber]
 {19, 11, 20, 20, 21, 20}
assoc3 = SortBy[PositionIndex[shuffledDnumber]]@assoc1
<|"A5" -> 19, "A3" -> 11, "A4" -> 21, "A1" -> 20, "A2" -> 20,  "A6" -> 20|>
Keys @ assoc3
{"A5", "A3", "A4", "A1", "A2", "A6"}
kglr
  • 400.5k
  • 18
  • 488
  • 929