【发布时间】:2011-02-09 21:41:51
【问题描述】:
我有一本格式如下的字典:
{ "honda" : 4, "toyota": 7, "ford" : 3, "chevy": 10 }
我想按第二列(即值)降序对其进行排序。
期望的输出:
“雪佛兰”,10
“丰田”,7
“本田”,4
“福特”,3
【问题讨论】:
标签: vb.net sorting dictionary
我有一本格式如下的字典:
{ "honda" : 4, "toyota": 7, "ford" : 3, "chevy": 10 }
我想按第二列(即值)降序对其进行排序。
期望的输出:
“雪佛兰”,10
“丰田”,7
“本田”,4
“福特”,3
【问题讨论】:
标签: vb.net sorting dictionary
感谢 caryden 来自: How do you sort a dictionary by value?
Dim sortedDict = (From entry In dict Order By entry.Value Descending Select entry)
上面报告的问题是由于循环不当造成的。
【讨论】:
其实如果是HashTable,是不能排序的。 另一方面,如果您有一个 ArrayList 或任何其他可以排序的集合,您可以实现自己的 IComparer。
public class MyDicComparer : IComparer
{
public int Compare(Object x, Object y)
{
int Num1= ((Dictionary)x).Value; // or whatever
int Num2= ((Dictionary)y).Value;
if (Num1 < Num2) return 1;
if (Nun1 > Num2) return -1;
return 0; // Equals, must be consideres
}
ArrayList AL;
...
AL.Sort(MyDicComparer);
HTH
【讨论】: