Is there a way to convert a type into a Dict?
Or is there a way to get a list of keys inside a type?
fieldnames(type) will return a Vector{Symbol}
I think what you are looking for would be
typedict(x) = Dict(fn=>getfield(x, fn) for fn ∈ fieldnames(x))
(in case you were not aware of getfield).
Perfect thanks! Yes getfield doesn’t appear here: https://docs.julialang.org/en/stable/manual/types/
For stuff like that you want to look in the standard library documentation here.
By the way, for what it’s worth, I recommend you avoid doing this if possible. In the general case you will have a Dict{Symbol,Any} so the compiler will no longer know the types of the fields. If you simply leave your struct intact, you won’t have this problem.
Thanks for the link. I’ll just use it for pretty printing
Came across this, and just wanted to correct it slightly to:
typedict(x::T) where {T} = Dict(fn=>getfield(x, fn) for fn ∈ fieldnames(T))
![]()
For a struct the syntax now requires a wrap with typeof(x):
typedict(x) = Dict(fn=>getfield(x, fn) for fn ∈ fieldnames(typeof(x)))
To preserve the order of the fields, you could use OrderedDict instead of Dict or, for small structs, LittleDict is faster and preserves order (both are from OrderedCollections) .