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.pythonDate : 26. Apr 2022, 22:07:51
Autres entêtes
Organisation : There's no cabale
Message-ID : <t49jeo$24dl$1@cabale.usenet-fr.net>
References : 1 2 3 4 5
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
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 "<stdin>", line 1, in <module>
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