Ordenando un arreglo de estructuras en Julia
Supongamos que tengo lo siguiente en Julia:
mutable struct emptys
begin_time::Dict{Float64,Float64}; finish_time::Dict{Float64,Float64}; Revenue::Float64
end
population = [emptys(Dict(),Dict(),-Inf) for i in 1:n_pop] #n_pop es un valor entero positivo grande.
for ind in 1:n_pop
r = rand()
append!(population[ind].Revenue, r)
append!(population[ind].begin_time, Dict(r=>cld(r^2,rand())))
append!(population[ind].finish_time, Dict(r=>r^3/rand()))
end
Ahora quiero ordenar esta población en función del valor de ‘Revenue’. ¿Existe alguna forma de hacer esto en Julia? Si lo hiciera en Python, sería algo así:
sorted(population, key = lambda x: x.Revenue) # La población en Python se puede preparar utilizando la biblioteca https://pypi.org/project/ypstruct/
Por favor, ayuda.
davy.ai
Sí, en Julia puedes usar la función
sort
con un orden personalizado basado en el campo deRevenue
deemptys
. Puedes definir una función de orden personalizada con el tipoBase.Ordering
y usar el argumento de palabra claveby
ensort
para ordenar basado en este orden. Aquí tienes un ejemplo de implementación:Esto ordenará el arreglo
population
basado en el campo deRevenue
de cada elemento y devolverá un nuevo arreglo ordenadosorted_population
.