C#反转词典中的项目

时间:2010-07-28 11:28:44

标签: c# dictionary reverse

我正在尝试在C#中翻译字典中的项目。 我试过了:

Dictionary<double, int> dict = new Dictionary<double, int>();
...add itmes to it....
var v = dict.Reverse()

然而,dict.Reverse()给了我一种IEnumberable&gt;。我只是想知道如何将它变成一种字典?

提前致谢。

3 个答案:

答案 0 :(得分:16)

<强>停止!

字典和哈希表和集合没有排序。

排序或更改订单绝对没有意义。

答案 1 :(得分:11)

字典不是有序数据结构。要使Reverse具有任何实际意义,您需要使用SortedDictionary。你可以通过创建一个带有Comparer的新副本来获得SortedDictionary的反向副本,该副本对原始进行相反的排序(参见constructor)。

var reversed = new SortedDictionary( original, new ReverseKeyComparer() );

请注意,ReverseKeyComparer是该示例的虚构类。

另外 - 如果你将Dictionary等同于 map hashtable ,你需要知道SortedDictionary有点用词不当。它使用二进制树实现(我认为是Red-Black),其算法复杂度不同于Dictionary的哈希表实现。请参阅各自文档页面的“备注”部分。如果性能至关重要,您可能需要考虑订购是否真正重要。

答案 2 :(得分:3)

如果您希望字典具有特定顺序,则应查看SortedDictionary。 见this article.