Path: ...!news.mixmin.net!aioe.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen Newsgroups: fr.comp.lang.python Subject: =?UTF-8?Q?Re:_V=c3=a9rifier_la_pr=c3=a9sence_de_plusieurs_cl=c3=a9s?= =?UTF-8?Q?_dans_un_dictionnaire?= Date: Tue, 26 Apr 2022 22:07:51 +0200 Organization: There's no cabale Lines: 42 Message-ID: References: <878rrsw4mx.fsf@universite-de-strasbourg.fr.invalid> <874k2fwxsi.fsf@universite-de-strasbourg.fr.invalid> NNTP-Posting-Host: 220.12.205.77.rev.sfr.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Trace: cabale.usenet-fr.net 1651003672 70069 77.205.12.220 (26 Apr 2022 20:07:52 GMT) X-Complaints-To: abuse@usenet-fr.net NNTP-Posting-Date: Tue, 26 Apr 2022 20:07:52 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4 In-Reply-To: <874k2fwxsi.fsf@universite-de-strasbourg.fr.invalid> Bytes: 2648 Le 26/04/2022 19:37, Alain Ketterlin a écrit : > > Oui, mais je pense que ça marche grâce aux "reflected/swapped operands", > qui fait si il n'y a pas de __sub__ sur list, la méthode __rsub__ de set > (ou ce que renvoie keys()) est utilisée... > > https://docs.python.org/3/reference/datamodel.html#object.__radd__ Eh bien je suis vraiment content d'avoir posé la question, parce que j'étais loin d'imaginer tous ces mécanismes et que je trouve ça passionnant ! Par ailleurs tu as raison, le __sub__ n'existe pas pour une liste alors que le __rsub__ fonctionne sur un dict_keys : % keys.__sub__(d.keys()) Traceback (most recent call last): File "", line 1, in AttributeError: 'list' object has no attribute '__sub__' % d.keys().__rsub__(keys) set() % d.keys() dict_keys([ ... ]) >>> all (k in d for k in keys) > >> [...] ta solution >> présente surtout l'intérêt d'être plus lisible. [...] > > Dans ce cas, "beauty is in the eye of the beholder", choisis ce que tu > comprendras le plus facilement quand tu reliras le code dans 3 > semaines/mois/années/. Oui, mais il faut aussi penser que ce soit quelqu'un d'autre que moi qui puisse devoir relire le code plus tard, alors j'ajouterai aussi un commentaire disant en substance « on vérifie que toutes les clés requises sont dans le dictionnaire ». -- Olivier Miakinen