我希望有一个接受Dict
或NamedTuple
作为输入,但始终将输入转换为NamedTuple
的接口。
给出Dict
julia> dd = Dict(:a => 1, :b => 2)
Dict{Symbol,Int64} with 2 entries:
:a => 1
:b => 2
我可以用]将其隐藏到NamedTuple
中>
julia> (; dd...) (a = 1, b = 2)
但是,这两者都分配了惊人的数量(对我来说)
julia> using BenchmarkTools julia> @btime (; $dd...); 1.033 μs (12 allocations: 896 bytes)
并且它不适用于嵌套的
Dict
,我想将其转换为嵌套的NamedTuple
julia> dd_nested = Dict(:a => 1, :b => Dict(:x => 3, :y => 4)) Dict{Symbol,Any} with 2 entries: :a => 1 :b => Dict(:y=>4,:x=>3) julia> (; dd_nested...) (a = 1, b = Dict(:y => 4,:x => 3))
所需的输出等于
julia> (a = 1, b = (x = 3, y = 4))
(a = 1, b = (x = 3, y = 4))
我希望有一个接受Dict或NamedTuple作为输入的接口,但总是将输入转换为NamedTuple。给定Dict julia> dd = Dict(:a => 1,:b => 2)Dict {...
关于: