web-dev-qa-db-fra.com

Python accès sécurisé aux clés du dictionnaire

Je suis à la recherche d'une approche d'accès au clavier pratique et sûre python dictionnaire). Voici 3 façons qui me sont venues à l'esprit.

data = {'color': 'yellow'}

# approach one
color_1 = None
if 'color' in data:
    color_1 = data['color']

# approach two
color_2 = data['color'] if 'color' in data else None


# approach three
def safe(obj, key):
    if key in obj:
        return obj[key]
    else:
        return None

color_3 = safe(data, 'color')

#output
print("{},{},{}".format(color_1, color_2, color_3))

Les trois méthodes fonctionnent, bien sûr. Mais existe-t-il un moyen simple et original pour y parvenir sans avoir à utiliser un excès de if ou des fonctions personnalisées?

Je pense qu'il devrait y en avoir, car c'est un usage très courant.

14
nipunasudha

Vous avez manqué la méthode canonique, dict.get() :

color_1 = data.get('color')

Il renverra None si la clé est manquante. Vous pouvez définir une valeur par défaut différente comme deuxième argument:

color_2 = dict.get('color', 'red')
18
Martijn Pieters

Découvrez dict.get() . Vous pouvez fournir une valeur à renvoyer si la clé n'est pas trouvée dans le dictionnaire, sinon elle renverra None.

>>> data = {'color': 'yellow'}
>>> data.get('color')
'yellow'
>>> data.get('name') is None
True
>>> data.get('name', 'nothing')
'nothing'
5
mhawke