Path: ...!weretis.net!feeder8.news.weretis.net!news.mixmin.net!aioe.org!Faqf6A55NG1s8DSVkh3L9A.user.46.165.242.75.POSTED!not-for-mail From: Alain Ketterlin Newsgroups: fr.comp.lang.python Subject: Re: =?utf-8?Q?V=C3=A9rifier?= la =?utf-8?Q?pr=C3=A9sence?= de plusieurs =?utf-8?Q?cl=C3=A9s?= dans un dictionnaire Date: Tue, 26 Apr 2022 11:55:18 +0200 Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg Message-ID: <878rrsw4mx.fsf@universite-de-strasbourg.fr.invalid> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: gioia.aioe.org; logging-data="3372"; posting-host="Faqf6A55NG1s8DSVkh3L9A.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) Cancel-Lock: sha1:juZdSj3chg4dt118opXxRybSYRQ= X-Notice: Filtered by postfilter v. 0.9.2 Bytes: 2859 Lines: 45 Olivier Miakinen writes: >> Soit maintenant une liste de plusieurs cl=C3=A9s keys=3D[key1, key2, ...= keyn]. >>=20 >> Quelle serait la fa=C3=A7on la plus =C3=A9conomique pour v=C3=A9rifier q= ue toutes les cl=C3=A9s >> list=C3=A9es dans keys sont pr=C3=A9sentes dans le dictionnaire d ? Je n= 'ai pas besoin >> de savoir pr=C3=A9cis=C3=A9ment quelles cl=C3=A9s sont pr=C3=A9sentes, j= e voudrais juste un test >> qui me r=C3=A9ponde True si tous les =C3=A9lements de keys sont bien des= cl=C3=A9s dans d, >> False si au moins un =C3=A9l=C3=A9ment de keys n'est pas une cl=C3=A9 da= ns d. > > Ceci devrait faire l'affaire : > not (keys - d.keys()) > > Sauf erreur de ma part, =C3=A7a r=C3=A9pondra True si la diff=C3=A9rence = entre mon tableau > de cl=C3=A9s et les vraies cl=C3=A9s du dictionnaire est un ensemble vide= , False si > la diff=C3=A9rence contient au moins une cl=C3=A9 (pr=C3=A9sente donc dan= s keys et pas dans > d.keys()) Je m'interroge sur cette fa=C3=A7on de faire... keys est une liste, d.keys() une "vue", je ne vois pas bien de quel op=C3=A9rateur - il s'agit (le r=C3=A9sultat est un set, en tout cas). Bref, cela fait bien ce que tu veux apparemment. Si le dictionnaire est volumineux et la liste courte, il vaut peut-=C3=AAtre mieux faire quelque chose comme all (k in d for k in keys) cela =C3=A9vitera la cr=C3=A9ation explicite d'un set dans le seul but de t= ester s'il est vide, et j'imagine que cela arr=C3=AAte la recherche au premier False, ce que semble confirmer la doc de all. (Difficile d'en dire plus parce que toutes ces op=C3=A9rations ont une complexit=C3=A9 --voire un comportement -- mal document=C3=A9e.) -- Alain.