相关疑难解决方法(0)

你如何按价值排序字典?

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

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

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

.net c# sorting dictionary

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

为什么词典"没有订购"?

我已经在这里回答了许多问题.但究竟是什么意思呢?

var test = new Dictionary<int, string>();
test.Add(0, "zero");
test.Add(1, "one");
test.Add(2, "two");
test.Add(3, "three");

Assert(test.ElementAt(2).Value == "two");
Run Code Online (Sandbox Code Playgroud)

上面的代码似乎按预期工作.那么字典被认为是无序的?在什么情况下上面的代码会失败?

.net c# dictionary operator-precedence base-class-library

45
推荐指数
4
解决办法
9948
查看次数

切换整数表达式的情况

我试图使用switch case而不是If Else声明,其中我必须首先检查字符串的长度,并根据我必须做出它的情况.

switch (mystring.length)
{
    case <=25:
    {
        //do this
        break;
    }
    case <50:
    {
        //do this
        break;
    }
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

这是我想要做的一些事情,但无法获得如何放在<25案例前面,因为根据开关案例规则它是不合适的.

.net c#

11
推荐指数
2
解决办法
5万
查看次数

C# - 带有环列表行为的字典?

我需要一个可以存储密钥和项目的环列表字典.Capacity = 50当我添加#51第一个项目时必须删除.基本上它必须是一个行为像环列表的字典.

.NET Framework中有什么可以做到的吗?或者我必须自己写吗?

c# dictionary list

7
推荐指数
2
解决办法
661
查看次数

.NET的字典中的元素是否顺序?

比如,如果我创建这样的字典:

Dictionary<string, MyClass> dic = new Dictionary<string, MyClass>();

dic.add("z1", val1);
dic.add("abc9", val2);
dic.add("abc8", val3);
dic.add("ABC1", val4);
Run Code Online (Sandbox Code Playgroud)

所以当我这样做时:

foreach (KeyValuePair<string, MyClass> kvp in dic)
{
}
Run Code Online (Sandbox Code Playgroud)

我保证将这些值检索为:"z1","abc9","abc8","ABC1"?

如果我第一次这样做,它会是:"z1","abc8","ABC1"?

dic.Remove("abc9");
Run Code Online (Sandbox Code Playgroud)

.net c# dictionary

5
推荐指数
2
解决办法
855
查看次数

HashTable到字典转换

我已将哈希表转换为字典.但问题是当我去打印它没有按顺序排列的值时.

aHashtable.Add(1014, "201");
aHashtable.Add(10, "ATIB");
aHashtable.Add(143, "LOVE");
aHashtable.Add(111, "HATE");

var dict= aHashtable.Cast<DictionaryEntry>().ToDictionary(d => d.Key, d => d.Value);

foreach (KeyValuePair<object, object> keyValuePair in dict)
{
    Console.WriteLine(keyValuePair.Key + ": " +keyValuePair.Value);
}
Run Code Online (Sandbox Code Playgroud)

有什么问题?

c#

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

如何禁用字典中的排序?

我正在使用a Dictionary<string, object>,我遇到了一个问题,我需要按照它们放在字典中的顺序保存项目,而不是按相应键的字母顺序排列.

有没有办法禁用添加项目的排序,或者更好地使用其他一些自定义类(我想保留所有dic[key] = value和其他访问器)?

如果a不可能Dictionary,我还可以使用哪些仍按键返回项目?

c# sorting dictionary

1
推荐指数
3
解决办法
1849
查看次数

将字典导出为JSON(按键排序)

我有一本字典

Dictionary<string, object>
Run Code Online (Sandbox Code Playgroud)

(值可以是字符串,整数或双精度型)。我将字典导出到JSON文件:

JsonConvert.SerializeObject(myDict);
Run Code Online (Sandbox Code Playgroud)

我希望保存的JSON按键排序。

.net c# json dictionary

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

C# 字典 - 每次以相同的顺序添加相同的键集是否保证每次都保持相同的顺序(无论顺序是什么)?

按照相同的顺序,我的意思不是添加键的顺序相同!

说,

1) 我有一本字典 d

2) 我添加 2, 4, 6 作为我的键

  • d.Add(2, "")
  • d.Add(4, "")
  • d.Add(6, "")

3) 现在我通过 d.Keys 属性访问它

  • 比如说,它按 4、2、6 的顺序返回键

现在按照相同的顺序,我的意思是,如果我不断重复步骤 2 和 3。

d.Keys 是否总是以相同的顺序返回键 4、2、6。

鉴于每次都以相同的顺序添加相同的一组键(2,4,6)!

基本上是在字典中添加键是一个确定性的过程

我已经运行了一些随机样本,看起来Dictionary.Keys 属性每次都为同一组键返回相同的序列。

但是有保证吗?

我试过的示例代码

public static void Main(string[] args)
        {
            var rand = new Random();
            var fixedKeys = Enumerable.Range(1, 100000).Select(x => rand.Next(10000000)).Distinct().ToList();

            var dic = new Dictionary<int, string>();

            foreach (var item in fixedKeys)
            {
                dic.Add(item, "");
            } …
Run Code Online (Sandbox Code Playgroud)

c#

0
推荐指数
1
解决办法
128
查看次数