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 1077 Точки

Няма как да стане директно, защото във 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 1077 Точки

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

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

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

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

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.