Софтуерно Инженерство
Loading...
M.Petrova avatar M.Petrova 11 Точки

Flatten Dictionary ,Lambda and LINQ - Exercises

Здравейте! Ако някой е решавал по подобен начин, моля да сподели опита си...идеята ми е след като си взема необходимите за конкатенация стойности и ги сложа във втория речник, да изтрия всички entry-та със ключ TV, в този случай и да запълня речника с новите стойности - новите два входа TV Lenovo General, TV Samsung Homе. Линк към judge -> https://judge.softuni.bg/Contests/Practice/Index/435#4.  Кодът:   https://pastebin.com/6gQ405bz

0
Fundamentals Module
M.Petrova avatar M.Petrova 11 Точки

Благодаря за съдействието и отделеното време! Изтрих си стойностите на вътрешния с data[info[1]].Clear(), а не с data.Clear(); както недомислено пробвах– съответно така беше изтрил целия data речник.  k.sevov -  какво трябва да коригирам в начина на отпечатване, без да правя някаква проверка дали е "flattened"или не? Или няма да стане такa?

0
25/03/2018 16:18:46
k.sevov avatar k.sevov 1070 Точки

Няма как да стане директно, защото във flattened имаш само вътрешните ключ-стойност, но не знаеш на кой ключ принадлежат (дали е TV или Default примерно), за да можеш да ги изпечаташ към него. Тази информация се губи в момента, в който си изчистиш нестнания речник с Clear, и най-добрият вариант според мен е да си я запазиш в нестната структура за flattened както е в примерното решение, което пуснах. Може и да не ги триеш въобще, но тогава печатането ще се усложни доста с разни проверки и няма смисъл. 

0
M.Petrova avatar M.Petrova 11 Точки

Да, така е след изтриването се губи към кой ключ са стойностите, затова идеята ми беше да само изтрия стойностите, след като си ги взема във втория речник - fldttenedDict, като трия само тях- тези, който тепърва ще "сплескам" и не изтривам основния - външния ключ, през който да минат и останат в data речника новите стойности. Ще ми се да имплементирам това, което VasAtanasov е предложил по-горе - да подменя вложения речник с нов, но не знам как, ....а твоето решение си е категорично решение на проблема ;)

0
25/03/2018 17:25:18
k.sevov avatar k.sevov 1070 Точки

Не съм сигурен, че разбирам какво имаш предвид, тъй като предложението на колегата е еквивалентно на това, което се получава с Clear - просто сменяме речника с нов вместо да изпразним стария от стойности. Това не ни помага да разберем накрая кои стойности от flattened накрая към кой ключ принадлежат. 

Иначе това може да се реши и само с основната структура без въобще да си правим flattened речник, но е една идея по-завъртяно. Идеята е, че можем при команда flatten всички двойки във вътрешния да им сменим ключа на key+value, а за стойност да им дадеш "flattened" примерно. Съответно накрая в цикъла за всеки ключ първо печаташ всички вътрешни, които нямат стойност "flattened", а после тези с нея :) Ако ти се занимава можеш да пробваш да го имплементираш така, ще се сблъскаш с най-различни интересни и неочаквани проблеми, но пък си е добра практика и малко смяна на шаблона на тези задачи за речници.

0
25/03/2018 18:33:44
M.Petrova avatar M.Petrova 11 Точки

Макар и ... позакъсняло .... Благодаря! 

 

0