Как мога да сортирам вложен речник?
В една изпитна задача се налага да сортирам вложен речник от вида: date=<string,Dictionary<string,int>.
Направил съм всичко необходмо и искам да си изведа речника,но за целта ми е необходимо да сорирам речника по Valuo-то на вътрешният речник.
Правя си foreach цикъл и пиша:
foreach (var name in date.OrderByDescending(s => s.Value.Values).Keys)
{
..................................................................
}
, но VS не го приема за верно(оцветява последната дума Keys в червено).
Къде греша и как да го оправя?
Мерси майна,
Асистенцията ти е успешна,но сега (след като махнах Keys) ми излиза нова грешка:
Във сколпа на foreach-a се опитвам да завъртя втори foreach,но VS ми казва ,че не мога да достъпя вътрешното Dictionary със:
date[name]-name е подчертано с червено.
foreach (var name in date.OrderByDescending(s => s.Value.Values)
{
foreach (var color in date[name].Keys)
{
Console.WriteLine($"({color}) {name} <-> {date[name][color]}");
}
}
Имаш ли идея как да завъртя вътрешния цикъл по ключовете на вътрешният речник?
:)
Ами правиш глупости. Foreach не позволява такива неща и итерирането по различни индекси. Просто смени поредицата няма как докато foreach -ваш вътрешния да итерираш върху външния ... а и ти ключа го имаш ще ти е нещо от сорта на. [date][key][name] и толкова. Малко не разбшрам какво се опитваш да направиш. И честно с един лек обект тжва ще стане с пъти по -лесно.
Става въпрос за една изпитна задача от тех-а,която се опитвам да напиша на C#.-Snowwhite.
Условието може да се види от тук:
https://softuni.bg/trainings/resources/officedocument/32247/exercise-problem-descriptions-group-2-programming-fundamentals-may-2018/1939
След като получим вход"Имало едно време" трябва да се изпринти речника dwarfdate,сортиран по Value-то на вътрешния ключ във възходящ ред(orderbydecsending).
Това се опитвам да направя.
:)
Ето и моето решение, с което стигхах до 10/100.
pastebin.com/eFzVH5TC
уф подхода ти е грешен,значи тука имаш съвсем лесно сортиране това с обект ще стане с пъти оп лесно но както и да е.ю
давай по-добри имена на променливите по дяволите какви са тея date и тн
имаш един речник dictionary<string,<dictionary<string,int>> all dwarves като цвета ти е първия ключ и името на dwarf-a втория. и после ства лесно
2 сортирания
alldwaves.orderbydesending(x=>x.Value.Value).ThenBy(x=>x.Value.Count); това да ти ги подреди цветовете според броя на джуджетата в тях
не ти трябва нищо fancy после foreach color in alldwarves ти е външното обхождане и вътре foreach dwarf in color ... и печаташ доста е простичка, но с обекти ще стане с пъти по опростена.
Не знам защо,но при сортиранато на речника кода се чупи:
pastebin.com/7emd8yhu