【发布时间】:2021-02-10 15:58:59
【问题描述】:
新手提醒:
我对使用字典或任何与 KeyValuePair 相关的东西都很陌生。
我有一个字典,我向它添加了一些值。var first_choice_dict = new Dictionary<string, int>();
名称是键,数字是表示选择的值。
Bob, 2
Chad, 1
Dan, 3
Eden, 5
Fred, 1
Greg, 4
Hope, 2
Ivan, 1
Jim, 2
请问是否有办法按相同的值对它们进行排序,然后仅将键移动到新字典(或者值也应该没问题),如下所示:
已排序:
Abe,1
Chad,1
Fred,1
Ivan, 1
......
新选择词典 1:Abe,Chad,Fred,Ivan
【问题讨论】:
-
您根本不想对它们进行“排序”。您想按值分组,然后构建一个新字典,其中选择是关键,我建议
IEnumerable<string> -
对于排序字典,您可以使用 SortedDictionary
docs.microsoft.com/en-us/dotnet/api/… -
@user3026017
SortedDictionary<TKey, TValue>的文档说 “表示按键排序的键/值对的集合。”,而 OP 的问题是询问排序依据值,尽管这似乎也不完全是他们想要做的。 -
感谢您的回复。 @Tim Schmelter,好吧应该试一试
-
你想要的是交换键和值。因此,一个值“1”将为您提供相应键的列表。但由于值在原始字典中不是唯一的,因此您必须使用 group by。
标签: c# list dictionary keyvaluepair