我有一个包含
形式数据的字典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.
我希望在其他字典中获得IList的唯一值以及新密钥。 任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
我不确定有更好的方法可以做到这一点,而不是:
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);
}
答案 1 :(得分:0)
如何将您的值视为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));