J'ai ce morceau de code, qui à mon avis est assez laid et je me demande comment on peut faire mieux:petit code python refactor
if dic.get(key, None) is None:
dic[key] = None
Points pour l'élégance ;-)
J'ai ce morceau de code, qui à mon avis est assez laid et je me demande comment on peut faire mieux:petit code python refactor
if dic.get(key, None) is None:
dic[key] = None
Points pour l'élégance ;-)
if key not in dic:
dic[key] = None
Cela peut ne pas être aussi court que le code d'Olivier, mais au moins c'est explicite et rapide.
S'il vous plaît, n'utilisez pas dict
comme nom de variable, il ombragé intégré.
d.setdefault(key) # sets d[key] to None if key is not in d
import collections
mydict = collections.defaultdict(lambda: None)
Maintenant, tout accès à mydict[akey]
sera (si akey
était pas présente comme une clé dans mydict
) fixé mydict[akey]
-None
comme un effet secondaire.
Notez que l'initialiseur defaultdict
nécessite un argument sans argument, d'où lambda
.
Vous n'avez pas besoin d'avoir 'None' explicitement, l'argument' default' par défaut 'None' – SilentGhost
@SilentGhost: hehe, je m'en suis rendu compte et j'ai changé ma réponse précisément en même temps que vous écriviez le commentaire. :-) –
Ceci est * considérablement * plus rapide que toute autre méthode, car il implémente le contrôle en C et évite ainsi tout le comptage de référence temporaire. –