Accueil » Python » Forums Python » Forum général Python » "Distinct" dans un dictionnaire

 • "Distinct" dans un dictionnaire

Document Actions
Réponses: 4   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

 • "Distinct" dans un dictionnaire

Posté par thipyt le 04/09/2008 17:02
Bonjour,

Je travaille actuellement avec un Zcatalog dans lequel je stocke, pour chaque article, un ID, une Designation et des Keywords.
Etant donné que je cherche à afficher ça dans une ZPT, je voudrais éviter d'avoir des doublons dans mon affichage, ce qui arrive étant donné les différents mots clé qui peuvent être trouvés pour un même ID.

Je pense utiliser un dictionnaire pour palier à ce problème. En lisant pas mal de choses, j'ai à peu près compris comment le construire étant donné ma problématique, mais je voudrais maintenant savoir s'il y a bel et bien moyen de faire l'équivalent d'un "SELECT DISTINCT" dans un dictionnaire ?? Je voudrais ainsi ne récupérer qu'une seule fois chaque article, en le recherchant par son ID.

Je n'ai pas encore réussi à trouver quelque chose me décrivant cela, malgré mes recherches, j'espère donc que vous pourrez m'aider !

Merci.

 • Re: "Distinct" dans un dictionnaire

Posté par isatis39871 le 05/09/2008 13:53
Hello,

Pour ce qui est des doublons, 3 cas.

Prenons le dictionnaire suivant :

code:
>>> test = dict(a=1, b=2, c=3, d=1)
>>> test
{'a': 1, 'b': 2, 'c': 3}


- Tu veux que la clé soit unique, et dans ce cas il n'y a rien à faire. Une clé est toujours unique dans un dictionnaire.

code:
>>> test['b'] = 3
>>> test
{'a': 1, 'b': 3, 'c': 3}


- Tu veux récupérer les valeurs du dictionnaire en éliminant les doublons. Dans ce cas le type set est idéal pour cela.

code:
>>> tuple(set(test.values()))
(1, 2, 3)


- Tu veux récupérer un dictionnaire identique à l'original mais dont les valeurs en double ont été supprimées. Dans ce cas je ne connais pas la solution idéale, mais j'en propose une fonctionnelle.

code:
>>> dict(((t,p) for (p,t) in  dict((x,y) for (y,x) in test.items()).items()))
{'b': 2, 'c': 3, 'd': 1}


Rappel : le dictionnaire n'est pas itérable, ni ordonné...

Bonne continuation :)

 • Re: "Distinct" dans un dictionnaire

Posté par isatis39871 le 05/09/2008 14:00
Pas d'édit alors double post ;)

En fait de test.items et test.values(), il vaut mieux utiliser test.iteritems et test.itervalues... J'avais pas fais attention en écrivant à la va vite.

 • Re: "Distinct" dans un dictionnaire

Posté par thipyt le 05/09/2008 16:27
Merci beaucoups pour ces explications Isatis !

J'ai trouvé pas mal de choses sur le net, mais finalement pas autant que dans tes quelques lignes !

 • Re: "Distinct" dans un dictionnaire

Posté par thipyt le 05/09/2008 16:28
Merci beaucoup pour ces explications Isatis !

J'ai trouvé pas mal de choses sur le net, mais finalement pas autant que dans tes quelques lignes !