Nano Hash - криптовалюты, майнинг, программирование

Как сравнить два словаря в С# и получить результат как True и False после проверки

Я хочу сравнить два словаря в С#, чтобы получить вывод как «Истина» и «Ложь». Вот код, который у меня есть до сих пор:

var dict3 = Dict.Where(entry => Dict_BM[entry.Key] != entry.Value)
                .ToDictionary(entry => entry.Key, entry => entry.Value);

У меня есть два разных названия словарей: «Dict» и «Dict_BM», и я хочу сравнить эти два словаря. Пожалуйста, предложите наилучший способ получить вывод как «True» и «False». Спасибо!



Ответы:


1

я думаю, что это самый быстрый способ сравнить два словаря и вернуть эти результаты как истинные или ложные.

Эта логика сработала для меня.

                Dictionary<string, int> Dictionary1 = new Dictionary<string, int>();
                d1.Add("data1",10);
                d1.Add("data2",11);
                d1.Add("data3",12);
                Dictionary<string, int> Dictionary2 = new Dictionary<string, int>();
                d2.Add("data3", 12);
                d2.Add("data1",10);
                d2.Add("data2",11);
                bool equal = false;
                if (Dictionary1.Count == Dictionary2.Count) // Require equal count.
                {
                    equal = true;
                    foreach (var pair in Dictionary1)
                    {
                        int tempValue;
                        if (Dictionary2.TryGetValue(pair.Key, out tempValue))
                        {
                            // Require value be equal.
                            if (tempValue != pair.Value)
                            {
                                equal = false;
                                break;
                            }
                        }
                        else
                        {
                            // Require key be present.
                            equal = false;
                            break;
                        }
                    }
                }
                if (equal == true)
                {
                    Console.WriteLine("Content Matched");
                }
                else
                {
                    Console.WriteLine("Content Doesn't Matched");
                }

Надеюсь, это полезно для вас.

26.05.2016

2

Если вы хотите создать новый словарь, в котором значение каждого ключа является логическим значением, указывающим, равны ли записи в двух исходных словарях, попробуйте следующее:

var dict3 = Dict.ToDictionary(
    entry => entry.Key, 
    entry => Dict_BM[entry.Key] == entry.Value);

Если возможно, что два исходных словаря не содержат одни и те же ключи, вы можете попробовать что-то вроде этого:

var dict3 = Dict.Keys.Union(Dict_BM.Keys).ToDictionary(
    key => key, 
    key => Dict.ContainsKey(key) && 
           Dict_BM.ContainsKey(key) && 
           Dict[key] == Dict_BM[key]);

Однако, если все, что вы хотите сделать, это проверить, содержат ли два словаря одинаковые элементы, вы можете просто использовать это:

var areEqual = Dict.SequenceEqual(Dict_BM);
14.08.2013
  • Есть ли другой способ сравнения без создания нового словаря для сравнения. 14.08.2013
  • @user2364821 user2364821 Если вы просто пытаетесь проверить, содержат ли два словаря одинаковые значения, см. мое обновление. 14.08.2013
  • +1, SequenceEqual работает на Dictionary, так как KeyValuePair является struct 14.08.2013
  • @CuongLe Спасибо. Просто для ясности: он будет работать с любым типом, который переопределяет метод Equals, а не только с structs. 14.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..