In julia ho un dizionario che può contenere altri dizionari, elenchi di stringhe/numeri, elenchi di dizionari, stringhe/numeri e intervalli.Genera tutte le combinazioni di dizionari contenenti intervalli
Ho bisogno di un elenco contenente tutta la combinazione possibile di dizionari per ogni intervallo (come StepRange, FloatRange, UnitRange) in esso contenuto.
Esempio:
Dict{}("A" => Dict{}("B" => 1:1:3, "C" => 2), "B" => [Dict{}("S" => 1:1.1:2.1)])
=>
[
Dict{}("A" => Dict{}("B" => 1, "C" => 2), "B" => [Dict{}("S" => 1.1)]),
Dict{}("A" => Dict{}("B" => 2, "C" => 2), "B" => [Dict{}("S" => 1.1)]),
Dict{}("A" => Dict{}("B" => 3, "C" => 2), "B" => [Dict{}("S" => 1.1)]),
Dict{}("A" => Dict{}("B" => 1, "C" => 2), "B" => [Dict{}("S" => 2.1)]),
Dict{}("A" => Dict{}("B" => 2, "C" => 2), "B" => [Dict{}("S" => 2.1)]),
Dict{}("A" => Dict{}("B" => 3, "C" => 2), "B" => [Dict{}("S" => 2.1)])
]
In questo momento, mi sto sovraccaricare una funzione ricorsiva come questo, ma non hanno idea su come continuare.
function iterate(generic, nets::Array)
return (generic, false)
end
function iterate(range::Union{StepRange,FloatRange,UnitRange}, nets::Array)
return (collect(range), true)
end
function iterate(array::Array, nets::Array)
for (n, v) in enumerate(array)
res = iterate(v, nets)
if res[2]
## We found a range! Return it
return res
end
end
return (array, false)
end
function iterate(dict::Dict, nets::Array)
for (k, v) in dict
res = iterate(v, nets)
if res[2]
return (dict, true)
end
end
return (dict, false)
end
(ho già fatto in Python, ma lavorare su un pezzo di testo, usando espressioni regolari per trovare campi di misura definiti (come "[1,2,0.1]") e dopo la generazione del codice di testo di analisi it.)
Nell'esempio, ' "B"=> 1: 1: 3' mentre solo le liste di uscita' "B" => 1' e '" B "= 2' e non' "B" => 3'. È un errore/errore di battitura? (poiché 'collect (1: 1: 3) == [1,2,3]') –
Risolto, scusa. Stavo odiando l'editor di testo StackOverflow e volevo uscirne al più presto possibile: D – Nico202