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
Няма как да стане директно, защото във flattened имаш само вътрешните ключ-стойност, но не знаеш на кой ключ принадлежат (дали е TV или Default примерно), за да можеш да ги изпечаташ към него. Тази информация се губи в момента, в който си изчистиш нестнания речник с Clear, и най-добрият вариант според мен е да си я запазиш в нестната структура за flattened както е в примерното решение, което пуснах. Може и да не ги триеш въобще, но тогава печатането ще се усложни доста с разни проверки и няма смисъл.
Да, така е след изтриването се губи към кой ключ са стойностите, затова идеята ми беше да само изтрия стойностите, след като си ги взема във втория речник - fldttenedDict, като трия само тях- тези, който тепърва ще "сплескам" и не изтривам основния - външния ключ, през който да минат и останат в data речника новите стойности. Ще ми се да имплементирам това, което VasAtanasov е предложил по-горе - да подменя вложения речник с нов, но не знам как, ....а твоето решение си е категорично решение на проблема ;)
Не съм сигурен, че разбирам какво имаш предвид, тъй като предложението на колегата е еквивалентно на това, което се получава с Clear - просто сменяме речника с нов вместо да изпразним стария от стойности. Това не ни помага да разберем накрая кои стойности от flattened накрая към кой ключ принадлежат.
Иначе това може да се реши и само с основната структура без въобще да си правим flattened речник, но е една идея по-завъртяно. Идеята е, че можем при команда flatten всички двойки във вътрешния да им сменим ключа на key+value, а за стойност да им дадеш "flattened" примерно. Съответно накрая в цикъла за всеки ключ първо печаташ всички вътрешни, които нямат стойност "flattened", а после тези с нея :) Ако ти се занимава можеш да пробваш да го имплементираш така, ще се сблъскаш с най-различни интересни и неочаквани проблеми, но пък си е добра практика и малко смяна на шаблона на тези задачи за речници.
Макар и ... позакъсняло .... Благодаря!