web-dev-qa-db-fra.com

Python met à jour une clé dans dict si elle n'existe pas

Je veux insérer une paire clé-valeur dans dict si la clé n'est pas dans dict.keys (). En gros, je pourrais le faire avec:

if key not in d.keys():
    d[key] = value

Mais y a-t-il une meilleure façon? Ou quelle est la solution Pythonic à ce problème?

44
Xiaochen Cui

Vous n’avez pas besoin d’appeler d.keys(),

if key not in d:
    d[key] = value

est assez. Il n'y a pas de méthode plus claire, plus lisible.

Vous pouvez mettre à jour à nouveau avec dict.get(), qui renverrait une valeur existante si la clé est déjà présente:

d[key] = d.get(key, value)

mais je recommande fortement contre cela; Il s’agit là d’un code de golf, gênant la maintenance et la lisibilité.

61
Martijn Pieters

Utilisez dict.setdefault() :

>>> d = {1: 'one'}
>>> d.setdefault(1, '1')
'one'
>>> d    # d has not changed because the key already existed
{1: 'one'}
>>> d.setdefault(2, 'two')
'two'
>>> d
{1: 'one', 2: 'two'}
33
mhawke