get unique values from dictionary<string, Ilist<Object

本文关键字:lt Ilist Object string unique dictionary get values from | 更新日期: 2023-09-27 18:02:32

我有一个字典,它的数据形式为

key ,  value
1   ,  1 0 1
       1 1 1
2   , 1 2 3
      4 5 6
3   , 1 0 1
      1 1 1 
 and so on.

我想在其他字典中获得illist的唯一值以及新键。谁能告诉我怎么做呢?

get unique values from dictionary<string, Ilist<Object

我不确定是否有比这更好的方法:

var dict = new Dictionary<string, IList<int>>();
var uniques = new Dictionary<string, IList<int>>();
foreach (var kvp in dict)
{
    if(!uniques.Any(val => val.Value.SequenceEqual(kvp.Value)))
        uniques.Add(kvp.Key, kvp.Value);
}

如何处理您的值作为HashSet而不是IList。然后你就可以使用相等比较器CreateSetComparer按值对字典进行分组。

  var dictionary = new Dictionary<string, IList<Object>>
                    {
                        {"1", new List<object> {1, 0, 1, 1, 1, 1}},
                        {"2", new List<object> {1, 2, 3, 4, 5, 6}},
                        {"3", new List<object> {1, 0, 1, 1, 1, 1}}
                    };
    var dictionaryHashSets = dictionary.ToDictionary(k=>k.Key, v=> new HashSet<Object>(v.Value));
    var reverseDictionary = dictionaryHashSets.GroupBy(pair => pair.Value, HashSet<Object>.CreateSetComparer()).ToDictionary(gk => gk.Key, gv => gv.Select(pair => pair.Key));