Обработать словарь типа Dictionary и на выходе получить ступенчатый массив - C#
Формулировка задачи:
Всем здравствуйте! Я только начинаю познавать программирование (около месяца).Поэтому прошу прощения в возможных неточностях определениях и т.п.
Помогите написать программу которая будет обрабатывать словарь типа Dictionary<string, string> и на выходе получать ступенчатый массив. В каждой строке массива должны хранится ключи словаря у который значения словаря под этими ключами будут одинаковыми. Если в значение в словаре уникально то в массив добавляться не будут. Ниже приведу пример моего не доделанного кода программы.
На выходе должно получится массив
ID0001 ID0003 ID0005 (ключи с "Вася")
ID0002 ID0013 ID0015 ID0016 (ключи с "Юля");
ID0004 ID0009 ID0010 ID0012 (ключи с "Миша")
ID0011 ID0014 ID0017 (ключи с "Саша")
В данном примере заполнения словаря происходит в ручную, и нужно предусмотреть что словарь будит создаваться другим блоком программы.( в итоге нужно получить функцию обработки массива )
Возможно проще использовать массив не Dictionary а просто двумерный массив.
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(); } } }
Решение задачи: «Обработать словарь типа 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 }; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д