Utilisez un dictionnaire dynamique pour manipuler vos données

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 131
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Utilisez un dictionnaire dynamique pour manipuler vos données

#1

Message par Numeric »

Salut à tous. Je vous présente Dictionary_UDF.au3
Cette UDF offre une série de fonctions pour créer, gérer, trier et rechercher des données dans des dictionnaires. Vous pouvez partager cette UDF avec d'autres développeurs pour faciliter leur travail avec des dictionnaires en AutoIt.

Nom de l'UDF : "Dictionary_UDF.au3"

Description :
L'UDF "Dictionary_UDF.au3" est une collection de fonctions pour la manipulation de dictionnaires en AutoIt. Les dictionnaires sont des structures de données qui stockent des paires clé-valeur, offrant une manière flexible de stocker et d'organiser des données.

Fonctions disponibles :

Code : Tout sélectionner

1. _DictionaryCreate(): Crée un dictionnaire vide.
2. _DictionaryAdd(ByRef $Dict, $Key, $Value): Ajoute une paire clé-valeur au dictionnaire.
3. _DictionaryGet(ByRef $Dict, $Key): Récupère la valeur associée à une clé.
4. _DictionaryRemove(ByRef $Dict, $Key): Supprime une paire clé-valeur du dictionnaire.
5. _DictionaryExists(ByRef $Dict, $Key): Vérifie si une clé existe dans le dictionnaire.
6. _DictionaryGetKeys(ByRef $Dict): Récupère toutes les clés du dictionnaire dans un tableau.
7. _DictionaryGetValues(ByRef $Dict): Récupère toutes les valeurs du dictionnaire dans un tableau.
8. _DictionaryCount(ByRef $Dict): Renvoie le nombre de paires clé-valeur dans le dictionnaire.
9. _DictionaryClear(ByRef $Dict): Efface toutes les paires clé-valeur du dictionnaire.
10. _DictionarySortKeys(ByRef $Dict): Trie les clés par ordre alphabétique.
11. _DictionarySortValues(ByRef $Dict): Trie les valeurs par ordre alphabétique.
12. _DictionarySortKeysDesc(ByRef $Dict): Trie les clés par ordre alphabétique inverse (décroissant).
13. _DictionarySortValuesDesc(ByRef $Dict): Trie les valeurs par ordre alphabétique inverse (décroissant).
14. _DictionaryContainsKey(ByRef $Dict, $Key): Vérifie si une clé spécifique existe dans le dictionnaire.
15. _DictionaryContainsValue(ByRef $Dict, $Value): Vérifie si une valeur spécifique existe dans le dictionnaire.
Utilisation :
Cette UDF facilite la manipulation de dictionnaires en AutoIt en fournissant des fonctions simples et efficaces. Les développeurs peuvent créer, ajouter, supprimer, rechercher, trier et gérer des données dans des dictionnaires avec facilité en utilisant ces fonctions.

Exemple d'utilisation :

Code : Tout sélectionner

#Include "Dictionary_UDF.au3"

$myDict = _DictionaryCreate()
_DictionaryAdd($myDict, "Nom", "John")
_DictionaryAdd($myDict, "Âge", 30)
$clés = _DictionaryGetKeys($myDict)
; ... (autres opérations avec le dictionnaire)
L'UDF "Dictionary_UDF.au3" permet aux développeurs AutoIt de gagner du temps et d'améliorer la lisibilité de leur code lorsqu'ils travaillent avec des dictionnaires.
Modifié en dernier par Numeric le ven. 20 oct. 2023 11:58, modifié 1 fois.
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Utilisez un dictionnaire dynamique pour manipuler vos données

#2

Message par mikell »

Tu as testé la fonction _DictionaryGetValues ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 131
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: Utilisez un dictionnaire dynamique pour manipuler vos données

#3

Message par Numeric »

mikell a écrit : jeu. 05 oct. 2023 16:01 Tu as testé la fonction _DictionaryGetValues ?
Merci mikell, pour la vigilance. la fonction _DictionaryGetValues comportait une erreur qui vient d'être corrigée. L'UDF vient d'être mise à jour.
Fichiers joints
Dictionary_UDF.au3
téléchargez la version mise à jour.
(4.37 Kio) Téléchargé 112 fois
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Utilisez un dictionnaire dynamique pour manipuler vos données

#4

Message par mikell »

C'est bien mieux :mrgreen:
Je me permets de suggérer une paire de modifs

Func _DictionarySortKeysDesc(ByRef $Dict)
remplacer
_ArraySort($keysArray) + _ArrayReverse($keysArray)
par
_ArraySort($keysArray, 1)

et surtout (pour améliorer la performance) :
Func _DictionaryContainsValue(ByRef $Dict, $Value)
remplacer :
_DictionaryGetValues + _ArraySearch
par :
For $key In $Dict
If $Dict($key) = $Value Then Return True (ou Return $key si on veut la clé)
Next
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 131
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: Utilisez un dictionnaire dynamique pour manipuler vos données

#5

Message par Numeric »

Alors, effectivement ces modifications permettront effectivement de gagner en performance. voici donc les fonctions concernées modifiées.

Code : Tout sélectionner

; Trie les clés par ordre alphabétique inverse (décroissant)
Func _DictionarySortKeysDesc(ByRef $Dict)
    If Not IsObj($Dict) Then Return SetError(1, 0, 0) ; Vérifie si $Dict est un objet Dictionary
    Local $keysArray = _DictionaryGetKeys($Dict)
    If @error Then Return SetError(2, 0, 0) ; Erreur lors de la récupération des clés
    _ArraySort($keysArray, 1) ; notez le paramètre optionnel 1 voir documentation...
    ;_ArraySort($keysArray)+_ArrayReverse($keysArray) = _ArraySort($keysArray, 1) 
    Return $keysArray
EndFunc

; Trie les valeurs par ordre alphabétique inverse (décroissant)
Func _DictionarySortValuesDesc(ByRef $Dict)
    If Not IsObj($Dict) Then Return SetError(1, 0, 0) ; Vérifie si $Dict est un objet Dictionary
    Local $valuesArray = _DictionaryGetValues($Dict)
    If @error Then Return SetError(2, 0, 0) ; Erreur lors de la récupération des valeurs
    _ArraySort($valuesArray, 1)
    ;_ArrayReverse($valuesArray) voir commentaires dans _DictionarySortKeysDesc(ByRef $Dict)
    Return $valuesArray
EndFunc
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Répondre