Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查具有相同键的多个词典是否具有相同的值_C# - Fatal编程技术网

C# 检查具有相同键的多个词典是否具有相同的值

C# 检查具有相同键的多个词典是否具有相同的值,c#,C#,假设我有一系列字典。所有的字典都有完全相同的键。对于每个键,我想返回数组中字典的索引,如果该键的值与至少一个其他字典的值相同 例如,如果存在一个键a,并且ArrayOfDictionary[0][a]和ArrayOfDictionary[2][a]的计算结果都为7,那么我想将a[0,2]对添加到一个空字典中 我对如何实现这一点的逻辑感到非常困惑。如果您的字典数组名为src,那么对于每个键,您可以使用匹配值将所有字典分组,然后转换为位置列表。将结果转换为字典取决于您希望如何处理结果中的重复键 va

假设我有一系列字典。所有的字典都有完全相同的键。对于每个键,我想返回数组中字典的索引,如果该键的值与至少一个其他字典的值相同

例如,如果存在一个键a,并且ArrayOfDictionary[0][a]和ArrayOfDictionary[2][a]的计算结果都为7,那么我想将a[0,2]对添加到一个空字典中


我对如何实现这一点的逻辑感到非常困惑。

如果您的字典数组名为src,那么对于每个键,您可以使用匹配值将所有字典分组,然后转换为位置列表。将结果转换为字典取决于您希望如何处理结果中的重复键

var ans2 = src[0].Keys.SelectMany(k => src.Select((d, i) => new { Key = k, Value = d[k], pos = i })
                                          .GroupBy(kvp => kvp.Value)
                                          .Select(kvpg => new { Key = kvpg.First().Key, Matches = kvpg.Select(kvp => kvp.pos).ToList() })
                      );

如果我理解正确,你的逻辑可能是这样的。 FilterAddictionary将获得最终结果

        var resultDictionary = new Dictionary<string, List<int>>();
        var filteredDictonary = new Dictionary<string, int[]>();

        var arrayOfDictionaries = new Dictionary<string, int>[]
        {
            new Dictionary<string, int> { { "a", 7 },{ "b",5},{ "c", 10 } },
            new Dictionary<string, int> { { "a", 8 },{ "b",6},{ "c", 10 } },
            new Dictionary<string, int> { { "a", 7 },{ "b",7},{ "c", 10 } },
        };


        for (var j = 0; j < arrayOfDictionaries.Length; j++)
        {
            foreach (var i in arrayOfDictionaries[j])
            {
                var uniqueKey = i.Key + i.Value.ToString();

                if (resultDictionary.ContainsKey(uniqueKey))
                {
                    resultDictionary[uniqueKey].Add(j);
                }
                else
                {
                    resultDictionary.Add(uniqueKey, new List<int> { j });
                }
            }
        }

        filteredDictonary = resultDictionary.Where(a => a.Value.Count() > 1).Select(a => a).ToDictionary(kv => kv.Key.Substring(0,1), kv => kv.Value.ToArray());

如果两个字典的a值为7,而两个不同的字典的a值为9,会发生什么?Hi@user3370908。到目前为止你试过什么?你的代码在哪里?与其说,不如说我有一组字典。所有的字典都有完全相同的键,如果您发布示例代码来初始化您所引用的字典,这将更有帮助。代码对示例数据的描述要比书面文字好得多。A将非常棒。如果这两个词典的区分大小写能力不同呢?还请说明数据的性质-如果这是XY问题-。