相关疑难解决方法(0)

你如何按价值排序字典?

我经常需要按值排序字典,包括键和值.例如,我有一个单词的散列和各自的频率,我想按频率排序.

有一个SortedList对单个值(比如频率)有好处,我想将它映射回单词.

SortedDictionary按键排序,而不是值.有些人诉诸于自定义课程,但是有更清洁的方法吗?

.net c# sorting dictionary

770
推荐指数
15
解决办法
57万
查看次数

.NET SortedDictionary但按值排序

我需要一个像a一样的数据结构,SortedDictionary<int, double>但是根据值而不是键来排序.当我们在字典中有大约3000个项目时,我需要大约1-2微秒来添加和删除项目.

我的第一个想法是简单地在我的代码中切换键和值.这几乎是有效的.通过这样做,我可以在测试中添加和删除元素大约1.2微秒.

但是键必须在SortedDictionary中是唯一的,这意味着我的逆字典中的值必须是唯一的.在某些情况下,他们可能不会.

.NET库中的某些想法已经对我有用吗?

.net c# collections dictionary sorteddictionary

6
推荐指数
1
解决办法
5891
查看次数

根据C#中字符串值的长度对字典进行排序

假设我有这样的字典

dict1 = {{[4,bcefgh]},{[5,abcefgh]},{[6,efgh]},{[7,bcefgh]},{[10,cefghi]}}
Run Code Online (Sandbox Code Playgroud)

我想在此字典中根据字符串值的长度对对进行排序,而无需使用额外的循环,即结果应为:

dict1 = {{[6,efgh]},{[4,bcefgh]},{[7,bcefgh]},{[10,cefghi]},{[5,abcefgh]}}
Run Code Online (Sandbox Code Playgroud)

我的最初答案是创建一个单独的字典,该字典具有相同的键和每个对应字符串的长度,以及第三个字典,该字典对如下循环:

foreach (KeyValuePair<int,string> pair  in dict1)
{
    temp_dict.Add(pair.Key, pair.Value.Count());
}

var items = from pair in temp_dict
        orderby pair.Value ascending
            select pair;

foreach (KeyValuePair<int, int> pair in items)
{
    result_dict.Add(pair.Key, dict1[pair.Key]);
}
Run Code Online (Sandbox Code Playgroud)

但是,此结果现在对于大量数据是可行的。

提前谢谢

c# dictionary sql-order-by

2
推荐指数
1
解决办法
1025
查看次数