如何从字典中的不同键获取相同的值?
How to get same values from different keys in a Dictionary?
新手提醒:
我对使用 Dictionary 或与 KeyValuePair 相关的任何东西还很陌生。
我有一个 Dictionary 并向其中添加了一些值。
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>
Dictionary<int, IEnumerable<string>> choiceDict = userChoicesDict
.GroupBy(kv => kv.Value)
.ToDictionary(g => g.Key, g => g.Select(kv => kv.Key));
如果您想要一个字符串作为以逗号分隔的名称的值:
Dictionary<int, string> choiceDict = userChoicesDict
.GroupBy(kv => kv.Value)
.ToDictionary(g => g.Key, g => string.Join(",", g.Select(kv => kv.Key)));
新手提醒:
我对使用 Dictionary 或与 KeyValuePair 相关的任何东西还很陌生。
我有一个 Dictionary 并向其中添加了一些值。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>
Dictionary<int, IEnumerable<string>> choiceDict = userChoicesDict
.GroupBy(kv => kv.Value)
.ToDictionary(g => g.Key, g => g.Select(kv => kv.Key));
如果您想要一个字符串作为以逗号分隔的名称的值:
Dictionary<int, string> choiceDict = userChoicesDict
.GroupBy(kv => kv.Value)
.ToDictionary(g => g.Key, g => string.Join(",", g.Select(kv => kv.Key)));