Я пытаюсь извлечь из серии строк, которая представляет глубину, как:Jagged словарь динамической глубины?
'foo/bar/x'
'foo/bar/baz/x'
'foo/bar/baz/x'
'foo/bar/lol/x'
Где x
это число не волнует. Я дошел до разделения на /
и прокручивался, и в этот момент на PHP я бы сделал что-то вроде проверки, где в цикле я (используя for (i=0; etc)
), а затем использую это, чтобы определить мою глубину для построения выходного массива как:
output['foo']['bar'] = 1
output['foo']['bar']['baz'] = 2
output['foo']['bar']['lol'] = 1
Проблема есть «глубина» является динамической и может быть либо только 3/4 глубоко (что я мог бы просто объяснить с большим количеством проверок стоимости i
и обращение с ними отдельно) или сказать 10 или более глубоко, и в этом случае, вероятно, лучше всего рекурсивная функция.
Я столкнулся с проблемой, что для строки в качестве индекса массива мне нужно использовать словарь, но вам нужно указать типы в словаре, то есть вам нужно знать глубину в расширенном (исправьте меня если я ошибаюсь) при создании экземпляра словарного объекта.
Я предполагаю, что атака может быть чем-то вроде вызова рекурсивной функции, так что каждый раз, когда она вызывается, вы передаете i
, чтобы указать глубину, тогда функция вызывает себя, декременяя i
каждый раз, пока она не построит часть дерева из этого но это структуры хранения, которые я использую для этого в C#, о котором я не уверен.
Конечный результат будет CSV, что я могу открыть в виде таблицы выглядеть следующим образом:
Foo 0
|__Bar 1
|__Baz 2
|__Lol 1
Возможно одно направление для решения заключается в использовании чистого C# массив и просто хранить название (например, foo
) там, сохраняя информацию из показаний массива, что, вероятно, является наилучшей практикой. Благодарю.
Даже в PHP , Если 'output ['foo'] ['bar'] = 1', как можно' output ['foo'] ['bar'] ['baz'] 'существуют? Либо 'output ['foo'] ['bar']' является словарем, либо является значением. Я не говорю, что это невозможно, но это не очень хорошая идея ... рассмотрите также: 'var whatAmI = output ['foo'] ['bar'];', 'whatAmI == 1'? 'whatAmI - Словарь'? – Kobi