May 10, 2007 sort associative array on values | ||||
---|---|---|---|---|
| ||||
Hi, It is easy to output a associative array sorted on his keys but does anyone know how to do it with the values sorted? I use associative arrays for frequency tables (for char[] en char) and I would like to output those sorted by value, and if that would be possible, also by key for equal values. Anyone ever tried this of has any ideas? Thanks in advance! Jan |
May 10, 2007 Re: sort associative array on values | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jan Hanselaer | Jan Hanselaer wrote: > Hi, > > It is easy to output a associative array sorted on his keys but does anyone know how to do it with the values sorted? > > I use associative arrays for frequency tables (for char[] en char) and I would like to output those sorted by value, and if that would be possible, also by key for equal values. Anyone ever tried this of has any ideas? > > Thanks in advance! > Jan I would imagine you would need a reverse mapping from value->key, sort that, and go from there. You could probably do it with an array of structs: struct ValueKey!(vT, kT) { vT value; kT key; int opCmp(ValueKey!(vT,kT) rhs) { return (value < rhs.value) : -1 ? ((key < rhs.key) : -1 ? 1); } } ValueKey!(vT,kT)[] map; map.length = freq_aa.keys.length; size_t i = 0; foreach( k,v ; freq_aa ) map[i++] = ValueKey!(vT,kT)(v,k); map.sort; Note: not tested, but that should get you going in the right direction. -- Daniel -- int getRandomNumber() { return 4; // chosen by fair dice roll. // guaranteed to be random. } http://xkcd.com/ v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP http://hackerkey.com/ |
Copyright © 1999-2021 by the D Language Foundation