es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, en Julia puedes usar la función sort con un orden personalizado basado en el campo de Revenue de emptys. Puedes definir una función de orden personalizada con el tipo Base.Ordering y usar el argumento de palabra clave by en sort para ordenar basado en este orden. Aquí tienes un ejemplo de implementación:

    # Definir orden basado en el campo de Revenue
    ordering = Base.Ordering(x -> x.Revenue)
    
    # Ordenar population basado en el orden
    sorted_population = sort(population, by = ordering)
    

    Esto ordenará el arreglo population basado en el campo de Revenue de cada elemento y devolverá un nuevo arreglo ordenado sorted_population.

Comments are closed.