C#反转词典中的项目

Sta*_*Cub 3 c# reverse dictionary

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

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

但是,dict.Reverse()给了我一种IEnumberable>.我只是想知道如何才能使它成为一种字典?

提前致谢.

lep*_*pie 16

停止!

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

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

  • 你是认真的并不能阻止这个答案变得有趣 (4认同)
  • 哈哈哈哈+1为**停止**.的xD (3认同)

tva*_*son 11

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

var reversed = new SortedDictionary( original, new ReverseKeyComparer() );
Run Code Online (Sandbox Code Playgroud)

请注意,ReverseKeyComparer该示例是一个虚构的类.

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