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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
import copy
dico = {
"nombre" : [5, 2, 3, 4,],
"etape" : ["e5", "e2", "e3", "e4",],
}
# réorganisation des données
liste_champs = list(dico.keys())
liste_donnees = []
for index in range(len(dico[liste_champs[0]])) :
element = {}
for nom_champ in liste_champs :
element[nom_champ] = dico[nom_champ][index]
liste_donnees.append(element)
# fonction de filtrage
def filtrage_element(filtres_select, element) :
"filtres_select = {nom_champ : [element, element, intervalle]}"
for (cle_filtre, tab_filtre) in filtres_select.items() :
if cle_filtre not in liste_champs :
print("le champ {} n\'existe pas".format(cle_filtre))
return False
if tab_filtre[-1] not in ["elements", "intervalle"] :
print("Erreur le champ renseigné est incorrect")
return False
if (
(tab_filtre[-1] == "intervalle")
&
(
(element[cle_filtre] < tab_filtre[0])
| (element[cle_filtre] > tab_filtre[1])
)
) :
return False
if (
(tab_filtre[-1] == "elements")
& (element[cle_filtre] not in tab_filtre[0:-1])
) :
return False
return True
# fin de def filtrage_element(filtres_select, element) :
# parcours des élément de liste_donnees
filtres_select = {
"nombre" : [1, 3, "intervalle"],
"etape" : ["e1", "e2", "elements"],
}
donnees_filtrees = list(element for element in liste_donnees if filtrage_element(filtres_select, element))
# affichage
def afficher_liste(liste) :
print("[");
for element in liste :
print(" " + str(element) + ",")
print("]");
print("données d'origine : ")
afficher_liste(liste_donnees)
print("données filtrées : ")
afficher_liste(donnees_filtrees)
"""
résultat :
données d'origine :
[
{'etape': 'e5', 'nombre': 5},
{'etape': 'e2', 'nombre': 2},
{'etape': 'e3', 'nombre': 3},
{'etape': 'e4', 'nombre': 4},
]
données filtrées :
[
{'etape': 'e2', 'nombre': 2},
]
""" |