Deutsch   English   Français   Italiano  
<878rrsw4mx.fsf@universite-de-strasbourg.fr.invalid>

View for Bookmarking (what is this?)
Look up another Usenet article

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 <alain@universite-de-strasbourg.fr.invalid>
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: <t475fb$17ub$1@cabale.usenet-fr.net>
	<t4761d$1839$1@cabale.usenet-fr.net>
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 <om+news@miakinen.net> 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.