IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

danielhagnoul

Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum.

Noter ce billet
par , 09/06/2021 à 22h30 (7905 Affichages)
La question a été posée en Python.

@xlpython nous dit : "Mon code fonctionne, mais le temps de traitement est trop élevé (compte tenu du nombre de valeurs /dictionnaires à traiter).
Pourriez-vous m'indiquer l'algorithme le moins coûteux ?"

En Julia, le problème est facilement résolu si l'on connaît la fonction maximum.

Code Julia : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using Base
 
function main()
    d1 = Dict("a" => 1.0, "b" => 1.1, "c" => 1.9)
    d2 = Dict("a" => 1.1, "b" => 1.4, "c" => 1.3)
    d3 = Dict("a" => 1.2, "b" => 1.3, "c" => 1.4)
    d10 = Dict("a" => 1.0, "b" => 3.5, "c" => 1.9)
    d20 = Dict("a" => 1.1, "b" => 1.4, "c" => 1.3)
    d30 = Dict("a" => 1.2, "b" => 1.3, "c" => 1.4)
    d100 = Dict("a" => 1.0, "b" => 1.1, "c" => 1.9)
    d200 = Dict("a" => 2.5, "b" => 1.4, "c" => 1.3)
    d300 = Dict("a" => 1.2, "b" => 1.3, "c" => 1.4)
    d1000 = Dict("a" => 1.0, "b" => 1.1, "c" => 1.9)
    d2000 = Dict("a" => 1.1, "b" => 1.4, "c" => 4.5)
    d3000 = Dict("a" => 1.2, "b" => 1.3, "c" => 1.4)
 
    array_dict = [d1, d2, d3, d10, d20, d30, d100, d200, d300, d1000, d2000, d3000]
 
    a = maximum(x -> x["a"], array_dict)
    b = maximum(x -> x["b"], array_dict)
    c = maximum(x -> x["c"], array_dict)
 
    (a, b, c) |> println
 
    dr = Dict("a" => a, "b" => b, "c" => c)
 
    @show dr
end
 
@time main()
@time main()
 
#=
(2.5, 3.5, 4.5)
dr = Dict("c" => 4.5, "b" => 3.5, "a" => 2.5)
  0.140124 seconds (479.21 k allocations: 26.631 MiB, 6.08% gc time, 98.97% compilation time)
 
(2.5, 3.5, 4.5)
dr = Dict("c" => 4.5, "b" => 3.5, "a" => 2.5)
  0.000971 seconds (176 allocations: 13.875 KiB)
 
Dict{String, Float64} with 3 entries:
  "c" => 4.5
  "b" => 3.5
  "a" => 2.5
=#

Licence Creative Commons Attribution 2.0 Belgique

Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog Viadeo Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog Twitter Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog Google Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog Facebook Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog Digg Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog Delicious Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog MySpace Envoyer le billet « Julia. Exercice : fusion de dictionnaires en conservant les valeurs maximum. » dans le blog Yahoo

Catégories
Programmation , Julia

Commentaires