Обработать словарь типа Dictionary и на выходе получить ступенчатый массив - C#

Узнай цену своей работы

Формулировка задачи:

Всем здравствуйте! Я только начинаю познавать программирование (около месяца).Поэтому прошу прощения в возможных неточностях определениях и т.п. Помогите написать программу которая будет обрабатывать словарь типа Dictionary<string, string> и на выходе получать ступенчатый массив. В каждой строке массива должны хранится ключи словаря у который значения словаря под этими ключами будут одинаковыми. Если в значение в словаре уникально то в массив добавляться не будут. Ниже приведу пример моего не доделанного кода программы.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Работа_с_Массивами
{
    class Program
    {
        static void Main(string[] args)
        {
            //Создаем словарь AAA
            var AAA = new Dictionary<string, string>();
            //Создаем зубчатый массив 
            List<string>[][] myArr = new List<string>[4][];
            myArr = null;
 
            //Заполняем словарь значениями
            AAA.Add("ID0001", "Вася");
            AAA.Add("ID0002", "Юля");
            AAA.Add("ID0003", "Вася");
            AAA.Add("ID0004", "Миша");
            AAA.Add("ID0005", "Вася");
            AAA.Add("ID0006", "Петя");
            AAA.Add("ID0007", "Марина");
            AAA.Add("ID0008", "Наташа");
            AAA.Add("ID0009", "Миша");
            AAA.Add("ID0010", "Миша");
            AAA.Add("ID0011", "Саша");
            AAA.Add("ID0012", "Миша");
            AAA.Add("ID0013", "Юля");
            AAA.Add("ID0014", "Саша");
            AAA.Add("ID0015", "Юля");
            AAA.Add("ID0016", "Юля");
            AAA.Add("ID0017", "Саша");
 
            foreach (var BBB in AAA)
            {
                Console.WriteLine(string.Format("Ключ = {0};Значение={1}", BBB.Key, BBB.Value));
            }
            Console.ReadLine();
 
            Console.ReadKey();
 
            //Поиск одинаковых значений словаря
            int m=0;
            int d;
            bool f = false;
             
            List<string> r = new List<string>();
            for (int i = 0; i < AAA.Count; i++)
            {
                    m = 0;
                    for (int j = i; j < AAA.Count; j++)
                    {
                        d = 0;
                        if (AAA.ElementAt(i).Value == AAA.ElementAt(j).Value)
                        {
                            Console.WriteLine(string.Format("Ключ = {0};Значение={1};i={2}", AAA.ElementAt(j).Key, AAA.ElementAt(j).Value, i.ToString()));
                            Console.ReadKey();
 
                             myArr[m][d].Add(AAA.ElementAt(j).Key);
                             d++;
                        }
               
                        m++;
                }
 
            }
 
            Console.ReadKey();
 
        }
    }
}
На выходе должно получится массив ID0001 ID0003 ID0005 (ключи с "Вася") ID0002 ID0013 ID0015 ID0016 (ключи с "Юля"); ID0004 ID0009 ID0010 ID0012 (ключи с "Миша") ID0011 ID0014 ID0017 (ключи с "Саша") В данном примере заполнения словаря происходит в ручную, и нужно предусмотреть что словарь будит создаваться другим блоком программы.( в итоге нужно получить функцию обработки массива ) Возможно проще использовать массив не Dictionary а просто двумерный массив.

Решение задачи: «Обработать словарь типа Dictionary и на выходе получить ступенчатый массив»

textual
Листинг программы
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
while (Modelparts.MoveNext())
{
        Part thismodelpart = Modelparts.Current as Part;
        Model.SelectModelObject(thismodelpart.Identifier);
        Solid solidPart = thismodelpart.GetSolid();
        if (thismodelpart != null)
        {   
              string ID =thismodelpart.Identifier.ID.ToString();
              string Name = thismodelpart.Name;
              List<string> list;
              if (dict.TryGetValue(Name, out list))
                    list.Add(ID);
              else
                  dict[Name] = new List<string>() { ID }; 
        }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы