Re: Vérifier la présence de plusieurs clés dans un dictionnaire

Liste des GroupesRevenir à fcl python 
Sujet : Re: Vérifier la présence de plusieurs clés dans un dictionnaire
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.python
Date : 26. Apr 2022, 19:01:31
Autres entêtes
Organisation : There's no cabale
Message-ID : <t498hb$21nm$1@cabale.usenet-fr.net>
References : 1 2 3
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.1
Le 26/04/2022 à 11:55, Alain Ketterlin a écrit :
>
  not (keys - d.keys())
 
Je m'interroge sur cette façon de faire... keys est une liste, d.keys()
une "vue", je ne vois pas bien de quel opérateur - il s'agit (le
résultat est un set, en tout cas). Bref, cela fait bien ce que tu veux
apparemment.

Tu as raison de t'interroger, parce que j'ai lu trop vite la doc :

<https://docs.python.org/fr/3.8/library/stdtypes.html#frozenset.difference>
§
Remarque : Les méthodes union(), intersection(), difference(), et
symmetric_difference(), issubset(), et issuperset() acceptent n'importe
quel itérable comme argument, contrairement aux opérateurs équivalents
qui n'acceptent que des sets.
§

En lisant cette remarque, j'ai cru à tort qu'elle disait que « - »
acceptait n'importe quel itérable à gauche et à droite, alors qu'au
ça ne vaut pour « difference() », et encore, seulement pour son
argument !

Bon, il se trouve que ça marche (et que ça retourne effectivement un
set) mais je suis bien sûr preneur d'une meilleure solution.

Si le dictionnaire est volumineux et la liste courte, il vaut peut-être
mieux faire quelque chose comme
 
all (k in d for k in keys)
 
cela évitera la création explicite d'un set dans le seul but de tester
s'il est vide, et j'imagine que cela arrête la recherche au premier
False, ce que semble confirmer la doc de all.

Ni le dictionnaire ni la liste ne sont très gros (moins de 20 entrées
pour le dictionnaire, et entre 3 et 6 pour la liste), mais ta solution
présente surtout l'intérêt d'être plus lisible. Cette commande 'all'
est vraiment ce qu'il me faut !

Bon, ayant créé un set, j'en avais profité pour l'afficher dans les
traces (« les données manquantes sont... »), mais je n'en ai pas plus
besoin que ça. Merci de m'avoir répondu, je pense que je vais vraiment
retenir ta proposition. J'essaye ça dès que possible.

(Difficile d'en dire plus parce que toutes ces opérations ont une
complexité --voire un comportement -- mal documentée.)

Certes. D'où la nécessité de n'utiliser que ce qui est documenté, parce
que le reste risquerait de changer de comportement d'une version à une
autre.

--
Olivier Miakinen

Date Sujet#  Auteur
25 Apr 22 * Vérifier la présence de plusieurs clés dans un dictionnaire9Olivier Miakinen
26 Apr 22 `* Re: Vérifier la présence de plusieurs clés dans un dictionnaire8Olivier Miakinen
26 Apr 22  +- Re: Vérifier la présence de plusieurs clés dans un dictionnaire1Nicolas
26 Apr 22  +* Re: Vérifier la présence de plusieurs clés dans un dictionnaire5Alain Ketterlin
26 Apr 22  i+* Re: Vérifier la présence de plusieurs clés dans un dictionnaire3Olivier Miakinen
26 Apr 22  ii`* Re: Vérifier la présence de plusieurs clés dans un dictionnaire2Alain Ketterlin
26 Apr 22  ii `- Re: Vérifier la présence de plusieurs clés dans un dictionnaire1Olivier Miakinen
26 Apr 22  i`- Re: Vérifier la présence de plusieurs clés dans un dictionnaire1Olivier Miakinen
27 Apr 22  `- Re: Vérifier la présence de plusieurs clés dans un dictionnaire1Olivier Miakinen

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal